我需要验证来自创建新记录表单的日期时间格式的两个日期。现在表格有年份,日期,月份,小时,分钟的下降。在控制器中,我需要验证开始日期是否不大于结束日期,并且不允许我使用params [:start_date]>进行比较。 PARAMS [:END_DATE]。
如何在向数据库添加新记录时正确验证开始日期不大于结束日期,我应该在模型中执行此操作,但我无法弄清楚您是如何做到的。这里有没有人有我可以看到的任何例子?
答案 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