我有一个模型Shop
,我希望存储每个shop
的开始和结束时间。如果他们的工作时间每天都相同,那就很简单,只有两个属性:opening_time
和closing_time
。但是大多数企业在不同的日子和假期都有不同的时间。
就目前情况而言,我必须为每个工作日添加两个属性,共计14个属性,并且可能创建一个全新的模型Holiday
,因为无法预测任何给定的业务将会有多少假期起飞
可以这样做,对于记录企业的工作时间来说,这似乎不必要地复杂,我不想让我的架构膨胀。有谁知道更好的方法?
答案 0 :(得分:1)
你应该有3个型号:
Shop
- 商业实体 Slot
- 包含属于start_time
的{{1}},end_time
,weekly_exception
此处,shop
是weekly_exception
中的整数,负责处理此时段有效的工作日
For Instance:range(0..127)
127 means (1111111) in base-2 representation => slot valid for all 7 weekdays
- 包含属于商店的SlotException
,blocked_start_time
,blocked_end_time
,exception_day
此处,is_on_leave
是仅在exception_day
和blocked_start_time
时间之间阻止广告位的日期。
blocked_end_time
是布尔值,负责插槽假期。
Ruby代码从week_exception获取工作日:
is_on_leave