我需要验证来自创建新记录表单的日期时间格式的两个日期。现在,表格有年份、日期、月份、小时、分钟的下拉菜单。在控制器中,我需要验证开始日期不大于结束日期,并且不允许我使用 params[:start_date] > params[:end_date] 进行比较。
在向数据库中添加新记录时,如何正确验证开始日期不大于结束日期,我应该在模型中执行此操作,但我无法弄清楚您是如何做到的。这里有没有人有我可以参考的例子?
我需要验证来自创建新记录表单的日期时间格式的两个日期。现在,表格有年份、日期、月份、小时、分钟的下拉菜单。在控制器中,我需要验证开始日期不大于结束日期,并且不允许我使用 params[:start_date] > params[:end_date] 进行比较。
在向数据库中添加新记录时,如何正确验证开始日期不大于结束日期,我应该在模型中执行此操作,但我无法弄清楚您是如何做到的。这里有没有人有我可以参考的例子?
向您的模型添加自定义验证以验证开始日期是否小于结束日期。像这样的东西会起作用:
# 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
#some_model.rb
before_create -> {
errors.add(:base, "Start date cannot be later than end date.") if start_date > end_date
}
不是您要的,但也可能是处理此问题的一种方法。人们有时不会如此仔细地阅读标签。
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