Здесь должно быть упущено что-то простое...
Я пробовал различные способы создания базового расписания IceCube
(https://github.com/seejohnrun/ice_cube а>). Общая цель состоит в том, чтобы использовать IceCube
, чтобы разрешить «расценки» внутри приложения rails «бронирования номеров».
В первом сценарии будет создано базовое schedule
с определенными start_time
и end_time
, встречающимися только один раз. IceCube
может это сделать, верно?
Расписание начнется start_time
и закончится end_time
. Я ожидаю, что смогу проверить, соответствуют ли даты или время occurs_on?
этому расписанию, чтобы определить, следует ли корректировать стоимость номера.
Итак, в консоли я попытался создать базовое расписание и ожидал, что оно будет происходить 5.days
с этого момента, поскольку start_time
равно Time.now
, а end_time
равно Time.now + 30.days
. Но, похоже, никогда не вернется правда ...
1.8.7 :001 > schedule = IceCube::Schedule.new(Time.now, :end_time => Time.now + 30.days)
=> #<IceCube::Schedule:0xb619d604 @all_recurrence_rules=[], @duration=nil, @end_time=Tue Jan 08 09:13:11 -0600 2013, @all_exception_rules=[], @start_time=Sun Dec 09 09:13:11 -0600 2012>
1.8.7 :002 > schedule.occurs_on? Date.today + 5.days
=> false
1.8.7 :005 > schedule.occurs_at? Time.now + 5.days
=> false
1.8.7 :006 > schedule.occurring_at? Time.now + 5.days
=> false
Добавление правила повторения
1.8.7 :018 > schedule.rrule IceCube::Rule.monthly
=> [#<IceCube::MonthlyRule:0xb687a88c @validations={:base_day=>[#<IceCube::Validations::ScheduleLock::Validation:0xb6875b0c @type=:day>], :base_hour=>[#<IceCube::Validations::ScheduleLock::Validation:0xb6875abc @type=:hour>], :interval=>[#<IceCube::Validations::MonthlyInterval::Validation:0xb6875d28 @interval=1>], :base_min=>[#<IceCube::Validations::ScheduleLock::Validation:0xb6875a6c @type=:min>], :base_sec=>[#<IceCube::Validations::ScheduleLock::Validation:0xb6875a1c @type=:sec>]}, @interval=1>]
Тогда проверка Date.today
работает...
1.8.7 :025 > schedule.occurs_on? Date.today
=> true
Но проверка происходит_на? for Date.today + 10.days
по-прежнему возвращает false... Почему?
1.8.7 :026 > schedule.occurs_on? Date.today + 10.days
=> false
Итак, что я упускаю/делаю неправильно? Или какой смысл устанавливать IceCube::Schedule start_time
и end_time
- они вроде не действуют...?
IceCube
не работает для однократных событий с временем начала и окончания?
Другой пример сценария: владелец комнаты хочет поднять цены на комнату в праздничный сезон. Таким образом, владелец комнаты создает прейскурант, который начинается 1 декабря 2012 г. и заканчивается 7 января 2013 года (не должно должно повторяться, но может, если владелец захочет).
Затем, когда люди ищут номера, цены будут скорректированы, если запрошенное пребывание occurs_on?
соответствует графику отпускных цен.
Мне нужно хранить start_time
и end_time
вне расписания и проверять вручную или что-то в этом роде?
Или есть более подходящий драгоценный камень/инструмент для помощи в таком управлении расписанием?
occurs_on? Date.today
возвращает false, когда событие явно происходит_on? Date.today...) - person b2tech   schedule 11.12.2012