我有一个模型 Garage
,它应该有开放时间。但是开放时间应该很灵活。例如,一周中的每一天都可以有不同的时间,并且应该可以添加休息时间。但也有可能时间没有变化或仅持续几天。
现在我想知道实现它的好方法是什么。有任何想法吗?我现在被这个困住了几天:(
最佳答案
我认为到目前为止的答案根本没有解决问题。只是想想我的脚,但我可能有这样的模式(带有示例数据):
id | garage_id | date | week_day | start_time | end_time
--------------------------------------------------------------
1 | 10 | NULL | 0 | NULL | NULL
2 | 10 | NULL | 1 | 09:00 | 17:30
3 | 10 | NULL | 2 | 09:00 | 17:30
4 | 10 | NULL | 3 | 09:00 | 17:30
5 | 10 | NULL | 4 | 09:00 | 17:30
6 | 10 | NULL | 5 | 09:00 | 17:00
7 | 10 | NULL | 6 | 11:00 | 16:00
8 | 10 | 2013-12-25 | NULL | NULL | NULL
此示例显示一周中每一天的开放时间,以及车库在圣诞节关闭的异常(exception)情况。应用逻辑会优先考虑OpeningTimes
与 date
指定的列,然后恢复为 week_day
如果没有 date
的匹配列找到了。
def is_open?
if (exc = opening_times.find_by_date(Date.today))
(exc.start_time..exc.end_time).cover?(Time.now)
else
tdy = opening_times.find_by_week_day(Date.today.wday)
(tdy.start_time..tdy.end_time).cover?(Time.now)
end
end
我认为这提供了您所追求的灵 active 。
关于ruby-on-rails - 模型的 Rails 灵活开放时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535349/