Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 数字验证-对另一个属性的引用_Ruby On Rails 3_Validation_Activerecord - Fatal编程技术网

Ruby on rails 3 数字验证-对另一个属性的引用

Ruby on rails 3 数字验证-对另一个属性的引用,ruby-on-rails-3,validation,activerecord,Ruby On Rails 3,Validation,Activerecord,我需要验证来检查一个属性是否小于或等于同一记录的另一个(虚拟)属性。我该怎么做 示例代码(不工作-命名错误): (请温柔而明确,我是RoR新手:)由于这些验证行将在第一次遇到类定义时执行,self.virt不存在 您通常可以传入lambda/proc,而该lambda/proc将在验证时从对象的范围中调用called: validates :my_attr, :numericality => { :less_or_equal => lambda { virt } } 不过,这仍然不

我需要验证来检查一个属性是否小于或等于同一记录的另一个(虚拟)属性。我该怎么做

示例代码(不工作-命名错误):


(请温柔而明确,我是RoR新手:)

由于这些验证行将在第一次遇到类定义时执行,
self.virt
不存在

您通常可以传入lambda/proc,而该lambda/proc将在验证时从对象的范围中调用
call
ed:

validates :my_attr, :numericality => { :less_or_equal => lambda { virt } }
不过,这仍然不是很好。更好的方法是定义自己的验证方法:

validate :my_attr_is_within_range

def my_attr_is_within_range
  my_attr <= virtual_attribute
end
验证:我的属性在范围内
def我的属性在范围内
我的母亲
validate :my_attr_is_within_range

def my_attr_is_within_range
  my_attr <= virtual_attribute
end