У меня есть две модели, первая (model_1
) принимает вложенные атрибуты для второй (model_2
). Вторая модель имеет только одно поле (file
), которое упоминается в форме как поле файла.
Проблема возникает, когда файл не выбран. В этом случае — за исключением, скажем, текстового поля — поле вообще не отображается в параметрах POST, в которых первая модель считает, что вложенная модель вообще не должна создаваться. Который не запускает проверки и т. д. Если бы я добавил второе поле в model_2 и соответствующую форму, и если я использую текстовый ввод, все пройдет нормально, и, естественно, проверки также будут работать нормально для поля файла.
У кого-нибудь есть опыт, как это сделать?
А для лучшего (упрощенного) кода — вид:
= form_for @model_1, :html => { :multipart => true } do |f|
- # fields for model 1 …
= f.fields_for :model_2 do |builder|
- # if this is empty, it's like no model_2 would be created at all:
= builder.file_field :file
Модель 1:
class Model1 < ActiveRecord::Base
has_many :model_2s, :dependent => :destroy
accepts_nested_attributes_for :model_2s
# …
end
и Модель 2:
class Model2 < ActiveRecord::Base
belongs_to :model_1
validates_presence:of :file
# …
end
@model_2 = @model_1.model_2s.build
. Хотя вроде ничего не меняет. - person polarblau   schedule 06.02.2011