0

所以我Shift modelstart_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)

如何做到这一点?

4

2 回答 2

1

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

于 2013-09-13T11:24:22.187 回答
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
于 2013-09-13T11:21:26.160 回答