Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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 验证Rails 3.1模型中的数据_Ruby On Rails_Model - Fatal编程技术网

Ruby on rails 验证Rails 3.1模型中的数据

Ruby on rails 验证Rails 3.1模型中的数据,ruby-on-rails,model,Ruby On Rails,Model,我的应用程序使用两个变量记录产品保修开始时间和保修结束时间;所以在我看来,我使用两个下拉菜单来选择开始和结束时间。 现在,我必须确定开始时间不应该大于结束时间。我可以用这种方式来模拟这种限制吗?我在模型文件中尝试了以下代码: validates_numericality_of :warranty_end, :greater_than => :warranty_start 但我看到它不起作用了! 有什么建议吗?我不认为您可以像那样在验证中使用变量,但您可以创建这样的自定义验证程序 v

我的应用程序使用两个变量记录产品保修开始时间和保修结束时间;所以在我看来,我使用两个下拉菜单来选择开始和结束时间。 现在,我必须确定开始时间不应该大于结束时间。我可以用这种方式来模拟这种限制吗?我在模型文件中尝试了以下代码:

  validates_numericality_of :warranty_end, :greater_than => :warranty_start 
但我看到它不起作用了!
有什么建议吗?

我不认为您可以像那样在
验证中使用变量,但您可以创建这样的自定义验证程序

validates_numericality_of :warranty_end
validate :warranty_end_less_than_warranty_start

...

def warranty_end_less_than_warranty_start
  unless warranty_end > warranty_start
    errors.add :warranty_end, "must be before the warranty starting date"
  end
end
这应该有效(至少在3.2中)。从以下文档:

验证:width,:less_than=>Proc.new{{| person | person.height} 验证:宽度、:大于=>:最小重量的\u数值性\u
谢谢你Azolo现在一切都好了!唯一的问题是您删除了“validates\u numericality\u of:warranty\u end”语句,因此我的工作代码是:

validate :warranty_end_less_than_warranty_start

...

def warranty_end_less_than_warranty_start
  unless warranty_end > warranty_start
    errors.add :warranty_end, "must be before the warranty starting date"
  end
end

再次感谢大家

场外“保修结束”和“保修开始”是两种日期类型。
validate :warranty_end_less_than_warranty_start

...

def warranty_end_less_than_warranty_start
  unless warranty_end > warranty_start
    errors.add :warranty_end, "must be before the warranty starting date"
  end
end