私は2つのモデルを持っています。最初のモデル(model_1
)は2番目のモデル()のネストされた属性を受け入れますmodel_2
。2番目のモデルにはフィールド(file
)が1つだけあり、ファイルフィールドとしてフォームで参照されます。
この問題は、ファイルが選択されていない場合に発生します。この場合、たとえばテキストフィールドを除いて、このフィールドはPOSTパラメータにまったく表示されません。最初のモデルでは、ネストされたモデルはまったく作成されるべきではないと考えられます。これは検証などをトリガーできません。model_2と対応するフォームに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