所以我Shift model
有start_date
和end_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)
如何做到这一点?
所以我Shift model
有start_date
和end_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)
如何做到这一点?
你也可以使用这个宝石:validates_overlap
您必须在此处添加自定义验证
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