2012-12-03 29 views
5

私はネストされた属性を持つフォームを持っています。今私の:reject_if =>ステートメントでは、ネストされたモデルの属性をチェックしたいと思います。例えば、first_record?このようなメソッドにアクセスする方法はありますか?送信された属性ハッシュにのみアクセスでき、たとえばフィールドが空白かどうかを確認できます。ありがとう!またドキュメントhttp://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.htmlrails accepts_nested_attributesと:reject_if

によると

+0

reject_ifはネストされた属性の変更を拒否するだけで、ネストされた属性値が不正なモデルを保存するときにエラーが発生することはありません。入れ子になっていない属性のエラーを取得する場合は、入れ子になったモデルに検証を追加するだけで、親モデルを保存するときにエラーがスローされます。 –

答えて

5

、:reject_ifもメソッドを使用するための記号を受け入れる:

class Member < ActiveRecord::Base 
    has_many :posts 
    accepts_nested_attributes_for :posts, :reject_if => :new_record? 
end 

class Member < ActiveRecord::Base 
    has_many :posts 
    accepts_nested_attributes_for :posts, :reject_if => :reject_posts 

    def reject_posts(attributed) 
    attributed['title'].blank? 
    end 
end 

これはあなたのために働く必要があります。基本的には、カスタム関数では、あなたが望むことができることを意味します。

+0

はい、呼び出されたメソッドはメンバモデル上にあります。ビルド中のオブジェクトのメソッドを呼びたいと思います。たとえば、 'accepts_nested_attributes_for:posts、:reject_if => post.first_record?'と 'Post'に' first_record? 'というメソッドがあると仮定しています。ビルド中のオブジェクトが利用可能かどうか、またはオブジェクトが実際にビルドされる前に ':reject_if =>'が呼び出されているのかどうかはわかりません。 – Kasper

+2

まあ、私は実際の問題を別の方法で解決しました。しかし、私はまだネストされたオブジェクトが ':reject_if'のために利用できるかどうか不思議です。 – Kasper

関連する問題