我的模型有start_time:time和end_time:time字段。我想要做的是检查我的特定预留模型的start_time到end_time范围是否与任何其他预留重叠。
因此,如果在星期三下午4点到6点有预订,那么下午4-6点就不能再预约了。我该怎么做呢?我不太确定如何根据其他Reservation条目中的其他start_time,end_time元组验证时间范围。
答案 0 :(得分:4)
def intersects?(reservation)
to = reservation.end_time
from = reservation.start_time
Reservation.where('start_time > ? OR end_time < ?', to, from).count > 0
end
答案 1 :(得分:0)
我会避免validates
这个特定的需求,只是做一些更像
before_save :time_check
def time_check
if #time in range
#reject
else
#accept!
end
或类似的东西,你需要实际时间检查的帮助吗?
请记住,您可以向时间对象Time.now + (60*60)*hours
添加秒数,以获得< and > tests