0

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

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

4

3 回答 3

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
于 2013-09-17T19:45:10.783 回答
0
#some_model.rb

before_create -> {
  errors.add(:base, "Start date cannot be later than end date.") if start_date > end_date
}
于 2013-09-17T19:37:23.097 回答
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
于 2013-09-17T20:09:15.307 回答