グーグル、フォーラム、グループなどを介してオンラインで多くを見つけることができないという問題に遭遇しているので、私は手を挙げて、私より賢い人たちに助けを求めるつもりです:)
2つのモデル間で1対1の関係を持つnested_attributes_forを使用していたRailsプロジェクトのセットアップがあります。それは非常に簡単に機能し、私が最近プロジェクトを変更してhas_many:through関係になるまで、予想どおりに機能しました。
コードは次のようになります。
Pモデル:
has_many :f_ps
has_many :fs, :through => :f_ps
Fモデル:
has_many :f_ps
has_many :ps, :through => :f_ps
F_Pモデル:
belongs_to :p
belongs_to :f
validates_uniqueness_of :f_id, :scope => :p_id, :message => 'each F must be unique for this P'
コードが上記のようである限り、すべてが正常に機能します(もちろん、Web GUIを介したCRUDアクションを除く)。ただし、ネストされた属性部分をPモデルに追加するとすぐに、次のようになります。
accepts_nested_attributes_for :fs,
:allow_destroy => true,
:reject_if => proc { |a| a.all? { |k,v| v.blank? } }
テストが失敗し、GUIが機能します(検証が強制されないことを除いて)。
この検証をnested_attributes_forと一緒にうまく機能させるための適切な方法に関するアイデアはありますか、それとも1年ほど前のように処理するためにPコントローラーで独自のCRUDアクションを作成する必要がありますか?