这里一定有一些简单的东西被忽略了......
我一直在尝试各种方法来创建基本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
isTime.now
和end_time
is 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
但检查发生_on?forDate.today + 10.days
仍然返回 false ......为什么?
1.8.7 :026 > schedule.occurs_on? Date.today + 10.days
=> false
那么我忽略了什么/做错了什么?或者设置一个IceCube::Schedule start_time
和end_time
- 它们似乎没有效果......有什么意义?
IceCube
不适用于具有开始和结束时间的单次事件?
另一个示例场景是,房主希望提高假日季节的房价。因此,房主创建了一个从 2012 年 12 月 1 日开始到 2013 年 1 月 7 日结束的价格表。(不必重复,但如果业主愿意,可以重复)。
然后当人们在搜索房间时,如果请求的住宿occurs_on?
是假期价格表,价格将被调整
我是否需要在日程表之外存储start_time
并end_time
手动检查或其他什么?
或者是否有更适合的 gem / 工具来协助这种日程管理?