2016-05-01 44 views
0

tasksのモデルProjectがあります。 Projectモデルaccepts_nested_attributes_forおよびvalidates_associatedtasksRails:ネストされたモデルバリデーションの親モデル属性へのアクセス

私の@projectのフォームでは、それぞれprojectに対して複数のを提出しています。プロジェクトタイプに基づいてネストされたtasksのバリデーションを実行したいと思います。次のように:

Taskモデル:残念ながら

with_options if: :special_project? do |task| 
    task.validate :is_possible 
    end 

    def special_project? 
    project.cat == 'special' 
    end 

、Railsは私にNilClassエラー

どうやらproject_id属性はまだTaskモデルに設定されていないundefined method cat for nil:NilClass

を与えます(?) 。

検証中にTaskネストされたモデルの親属性のProjectモデル属性にアクセスするにはどうすればよいですか?

+0

はい、まだ設定されていません –

答えて

0

これにはinverse_ofを使用する必要があります。モデルにinverse_ofを設定すると、Railsは関連するレコードにアクセスするときにメモリ内の同じレコードオブジェクトを使用します。これがうまくいくかどうかは完全には分かりませんが、試してみることができます

関連する問題