所以我有一个带有两个日期属性的模型
# migration
t.date :valid_from
t.date :valid_until
这些是可选的,您应该只能定义valid_from
或valid_until
,但如果两个日期都已填写,我希望(当然)valid_from
早于{{1} }}
检查这个的最佳位置,是带有验证器的模型内部,不是吗?我认为控制器不是最佳选择。
如何使用模型中的验证器完成此操作?我没有运气就尝试了几件事。
答案 0 :(得分:3)
您可以使用自定义验证器:
validate :valid_date_range_required
def valid_date_range_required
if (valid_from && valid_until) && (valid_until < valid_from)
errors.add(:valid_until, "must be later than valid_from")
end
end
答案 1 :(得分:0)
如果您发现自己必须验证很多日期,则可能需要添加date validator宝石!它为您提供了一个很好的语法,可能还有您需要的所有灵活性。