在Rails到达数据库之前验证Rails中的日期

时间:2013-09-17 19:25:02

标签: ruby-on-rails

我需要验证来自创建新记录表单的日期时间格式的两个日期。现在表格有年份,日期,月份,小时,分钟的下降。在控制器中,我需要验证开始日期是否不大于结束日期,并且不允许我使用params [:start_date]>进行比较。 PARAMS [:END_DATE]。

如何在向数据库添加新记录时正确验证开始日期不大于结束日期,我应该在模型中执行此操作,但我无法弄清楚您是如何做到的。这里有没有人有我可以看到的任何例子?

3 个答案:

答案 0 :(得分:1)

向模型添加自定义验证,以验证开始日期是否小于结束日期。像这样的东西会起作用:

# app/models/my_model.rb
validate :dates_in_order

def dates_in_order
    errors.add(:start_date, "must be before end time") unless start_date < end_date
end

答案 1 :(得分:0)

#some_model.rb

before_create -> {
  errors.add(:base, "Start date cannot be later than end date.") if start_date > end_date
}

答案 2 :(得分:0)

不是您要求的,但也可能是处理此问题的方法。人们有时不会仔细阅读标签。

before_create :confirm_dates_in_order

def confirm_dates_in_order
  start_date, end_date = end_date, start_date if start_date > end_date
end