我有两个模型,第一个模型 ( 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