我有一个模型 Shop
,我想存储每个 shop
的营业时间和营业时间。如果他们每天的时间都一样,那就简单了,就两个属性:opening_time
和closing_time
。但大多数企业在不同的日子有不同的时间,还有假期。
按照目前的情况,我必须为每个工作日添加两个属性,总共有 14 个属性,另外还可能创建一个全新的模型 Holiday
,因为无法预测给定企业有多少个假期将起飞。
这是可以做到的,只是记录企业的营业时间似乎不必要地复杂,而且我不想让我的模式膨胀。有谁知道更好的方法吗?
最佳答案
你应该有 3 个模型:
商店
- 商业实体Slot
- 包含start_time
,end_time
,weekly_exception
属于shop
这里,
weekly_exception
是range(0..127)
中的一个整数,它负责这个槽在哪个工作日有效例如:
127 表示 base-2 表示中的 (1111111) => 插槽对所有 7 个工作日有效
SlotException
- 包含blocked_start_time
、blocked_end_time
、exception_day
、is_on_leave
属于店铺此处,
exception_day
是在blocked_start_time
和blocked_end_time
时间之间被阻塞的日期。is_on_leave
是 bool 值,注意休假。
从 weekly_exception 中获取工作日的 Ruby 代码:
def get_weekdays(weekly_exception)
i, count = 1, 0
map, weekdays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], []
while count < 7
weekdays.push(map[count]) if (weekly_exception & i) > 0
i = i << 1
count += 1
end
return weekdays
end
关于ruby-on-rails - 有没有更有效的方法来存储商店的营业时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43576874/