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