ネストされたモデルフォームのネストされた構造内のモデル間で検証を行う方法はありますか?私が使用しているネストされた階層では、子モデルが親の属性を参照して検証を実行します。検証はボトムアップで行われるため(子モデルが最初に検証されます)、子には親への参照がなく、検証は失敗します。例えば:
# encoding: utf-8
class Child < ActiveRecord::Base
attr_accessible :child_attribute
belongs_to :parent
validate :to_some_parent_value
def to_some_parent_value
if child_attribute > parent.parent_attribute # raises NoMethodError here on ‘parent’
errors[:child_attribute] << "Validation error."
end
end
end
class Parent < ActiveRecord::Base
attr_accessible :parent_attribute
has_one :child
accepts_nested_attributes_for :child
end
コンソールの場合:
> p=Parent.new( { "parent_attribute" => "1", "child_attributes" => { "child_attribute" => "2" }} )
> p.valid?
=> NoMethodError: undefined method `parent_attribute' for nil:NilClass
子が親の値を参照し、Railsネストモデルフォーム機能を引き続き使用するこの種の検証を行う方法はありますか?