是否有更有效的方式来存储商店的营业时间?

时间:2017-04-23 21:48:03

标签: ruby-on-rails ruby performance memory memory-management

我有一个模型Shop,我希望存储每个shop的开始和结束时间。如果他们的工作时间每天都相同,那就很简单,只有两个属性:opening_timeclosing_time。但是大多数企业在不同的日子和假期都有不同的时间。

就目前情况而言,我必须为每个工作日添加两个属性,共计14个属性,并且可能创建一个全新的模型Holiday,因为无法预测任何给定的业务将会有多少假期起飞

可以这样做,对于记录企业的工作时间来说,这似乎不必要地复杂,我不想让我的架构膨胀。有谁知道更好的方法?

1 个答案:

答案 0 :(得分:1)

你应该有3个型号:

  1. Shop - 商业实体
  2. Slot - 包含属于start_time的{​​{1}},end_timeweekly_exception

    此处,shopweekly_exception中的整数,负责处理此时段有效的工作日

    For Instance:range(0..127)

  3. 127 means (1111111) in base-2 representation => slot valid for all 7 weekdays - 包含属于商店的SlotExceptionblocked_start_timeblocked_end_timeexception_day

    此处,is_on_leave是仅在exception_dayblocked_start_time时间之间阻止广告位的日期。  blocked_end_time是布尔值,负责插槽假期。

  4. Ruby代码从week_exception获取工作日:

    is_on_leave