Rails 3: проверка уникальности модели времени во временном диапазоне - PullRequest
1 голос
/ 02 мая 2011

В моей модели есть поля start_time: time и end_time: time.То, что я хочу сделать, это проверить, чтобы диапазон start_time to end_time моей конкретной модели резервирования не перекрывался с какими-либо другими бронированиями.

Так что, если в среду 2-го числа будет заказ с 4 до 6 вечера, то с 16 до 18 часов другого бронирования быть не может.Как бы я поступил так?Я не особенно уверен, как проверять диапазоны времени по отношению к другим кортежам start_time, end_time из других записей Reservation.

Ответы [ 2 ]

4 голосов
/ 02 мая 2011

вот так, возможно:

def intersects?(reservation)
  to = reservation.end_time
  from = reservation.start_time
  Reservation.where('start_time > ? OR end_time < ?', to, from).count > 0
end
0 голосов
/ 02 мая 2011

Я бы избегал validates для этой конкретной потребности, и просто сделал бы что-то более похожее на

before_save :time_check

def time_check
   if #time in range
      #reject
   else
      #accept!
end

или что-то подобное, вам нужна помощь с проверкой фактического времени?Просто помните, что вы можете добавить секунды к объекту времени Time.now + (60*60)*hours, чтобы получить диапазон с < and > tests

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...