Sch*_*lle 0 validation activerecord ruby-on-rails ruby-on-rails-3
有一个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
Run Code Online (Sandbox Code Playgroud)
Rails触发NoMethodError(未定义的方法`duration':model2:Symbol)
model2有一个属性持续时间......
知道我错过了什么吗?提前致谢...
该less_than_or_equal_to
选项需要一个数值,一个命名实例方法的符号,或一个在验证时执行的Proc.您可能想要第三个选项:
validates_numericality_of :start_day,
:less_than_or_equal_to => Proc.new { |model1| model1.model2.duration }
Run Code Online (Sandbox Code Playgroud)
或者如果你在model1中有一个方法,model2_duration
你可以将它缩短为:
validates_numericality_of :start_day, :less_than_or_equal_to => :model2_duration
Run Code Online (Sandbox Code Playgroud)