在rails中验证有两个日期属性

时间:2012-01-04 16:43:00

标签: ruby-on-rails ruby ruby-on-rails-3 validation model

所以我有一个带有两个日期属性的模型

  # migration
  t.date :valid_from
  t.date :valid_until

这些是可选的,您应该只能定义valid_fromvalid_until,但如果两个日期都已填写,我希望(当然)valid_from早于{{1} }}

检查这个的最佳位置,是带有验证器的模型内部,不是吗?我认为控制器不是最佳选择。

如何使用模型中的验证器完成此操作?我没有运气就尝试了几件事。

2 个答案:

答案 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宝石!它为您提供了一个很好的语法,可能还有您需要的所有灵活性。