Rails 3:验证时间范围内时间的模型唯一性

CCS*_*Sab 2 validation time model ruby-on-rails

我的模型有 start_time:time 和 end_time:time 字段。我希望能够做的是检查我的特定 Reservation 模型的 start_time 到 end_time 范围是否与任何其他保留重叠。

因此,如果在 2 号星期三下午 4 点至 6 点进行预订,则在下午 4 点至 6 点之间的任何时间都不能再进行预订。我该怎么做呢?我不是特别确定如何根据其他 Reservation 条目中的其他 start_time,end_time 元组验证时间范围。

mor*_*itz 5

像这样,也许:

def intersects?(reservation)
  to = reservation.end_time
  from = reservation.start_time
  Reservation.where('start_time > ? OR end_time < ?', to, from).count > 0
end
Run Code Online (Sandbox Code Playgroud)