如何写日期验证,不允许超过一圈日期?

时间:2013-09-13 11:16:58

标签: ruby-on-rails ruby validation

所以我Shift model start_dateend_date

我想写一个不允许彼此重叠的验证器。

例如:

#<Shift id: 88, start_date: "2013-11-11 08:00:00", end_date: "2013-11-12 08:00:00">

我不应该像这样创建Shift:

> Shift.create(start_date: "2013-11-12 07:00".to_datetime)

如何实现?

2 个答案:

答案 0 :(得分:1)

你也可以使用这个宝石:validates_overlap

答案 1 :(得分:0)

您必须在此处添加自定义验证

class Shift < ActiveRecord::Base
  validate :does_not_overlap

  def does_not_overlap
    if Shift.exists?("start_date > 2013-11-12 07:00")
      errors.add(:start_date, "cannot overlap")
    end
  end

end