model1 与 belongs_to:model2 关联。 model2 有一个名为 duration 的属性,带有一个整数。 model1 有一个名为 start_day 的属性。在此模型中,我想验证 start_day 是否小于或等于model2的持续时间。
我将以下行添加到model1:
validates_numericality_of :start_day, :less_than_or_equal_to => :model2.duration
Rails会触发 NoMethodError(未定义方法`duration'代表:model2:Symbol)
model2有一个属性持续时间......
知道我错过了什么吗?提前谢谢......
答案 0 :(得分:6)
less_than_or_equal_to
选项需要一个数值,一个命名实例方法的符号,或者需要在验证时执行的Proc。您可能想要第三个选项:
validates_numericality_of :start_day,
:less_than_or_equal_to => Proc.new { |model1| model1.model2.duration }
或者如果你在model1中有一个名为model2_duration
的方法,你可以将它缩短为:
validates_numericality_of :start_day, :less_than_or_equal_to => :model2_duration