我的应用程序使用两个varariable来记录产品保修开始时间和保修结束时间;因此在我看来,我使用两个下拉菜单来选择开始和结束时间。 现在,我必须确保开始时间不应超过结束时间。以女巫的方式我可以模拟这个限制吗?我在模型文件中尝试使用以下代码:
validates_numericality_of :warranty_end, :greater_than => :warranty_start
但我看到它不起作用! 有什么建议吗?
答案 0 :(得分:0)
我认为您不能像validates
这样使用变量,但您可以创建这样的自定义验证器
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
答案 1 :(得分:0)
这应该有效(至少在3.2中)。来自http://api.rubyonrails.org/classes/ActiveModel/Validations/HelperMethods.html的文档:
validates_numericality_of :width, :less_than => Proc.new { |person| person.height } validates_numericality_of :width, :greater_than => :minimum_weight
答案 2 :(得分:0)
谢谢Azolo现在它的作品!唯一的一点是你删除了“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
再次感谢大家