1

更新時に、ネストされたすべての属性に対して重複するエントリを作成するネストされたフォームがあります。これを防ぐために、reject_ifオプション forを使いたいと思いますaccepts_nested_attributes。コードは次のようになります。

accepts_nested_attributes_for :implicants, :reject_if => lambda { |a| a.is_a_duplicate? }

残念ながら、aこれは ActionController::Parameter であり、私が扱っているクラスのインスタンスではありません。私はこれを試しました:

accepts_nested_attributes_for :implicants, :reject_if => lambda { |a| self.is_a_duplicate?(a) }

しかし、これはインスタンスではなく、クラスへの呼び出しになります。reject_ifラムダ内からインスタンスを参照する方法はありますか?

4

1 に答える 1

1

:reject_ifこれは、責任を負うべきものではないことをお勧めします。:reject_ifファーストネームや電子メールが入力されていないなど、非常に明白で基本的な理由でパラメーターのグループを拒否することを意図しています。それがやや複雑な場合は、作成されているモデルで検証を行う必要があります。また、必要のないときに一貫して重複を作成している場合は、チェーンをさらに上に移動し、これらのパラメーターがコントローラーで終了しないようにする必要があります。ビューを修正します。

于 2013-05-24T10:44:21.667 に答える