ruby-on-rails - 有没有更有效的方法来存储商店的营业时间?

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

我有一个模型 Shop,我想存储每个 shop 的营业时间和营业时间。如果他们每天的时间都一样,那就简单了,就两个属性:opening_timeclosing_time。但大多数企业在不同的日子有不同的时间,还有假期。

按照目前的情况,我必须为每个工作日添加两个属性,总共有 14 个属性,另外还可能创建一个全新的模型 Holiday,因为无法预测给定企业有多少个假期将起飞。

这是可以做到的,只是记录企业的营业时间似乎不必要地复杂,而且我不想让我的模式膨胀。有谁知道更好的方法吗?

最佳答案

你应该有 3 个模型:

  1. 商店 - 商业实体
  2. Slot - 包含 start_time, end_time, weekly_exception 属于 shop

    这里,weekly_exceptionrange(0..127) 中的一个整数,它负责这个槽在哪个工作日有效

    例如:127 表示 base-2 表示中的 (1111111) => 插槽对所有 7 个工作日有效

  3. SlotException - 包含blocked_start_timeblocked_end_timeexception_dayis_on_leave 属于店铺

    此处,exception_day 是在 blocked_start_timeblocked_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/

相关文章:

ruby-on-rails - Gemfile.lock 权限被拒绝

ruby - 是否有与 Java MessageFormat 等效的 Ruby?

asp.net - DBMS 如何影响应用程序性能?还有 Informix GUI 工具吗?

ruby-on-rails - 如何在 Ruby on Rails 中找到给定类的所有作用域名称?

javascript - 显示用户角色 : angularjs, rolify,rails 应用程序

ruby-on-rails - Resque jobs,如何停止正在运行的作业

Ruby 父类(super class)创建 Stack 错误

php - 什么是 SQL 支持的数字运算的更好选择 - Ruby 1.9、Python 2、Python 3 或 PHP 5.3?

c - 在 C 中,哪个更快 : if with returns, 或者如果有返回?

python - 如何仅替换 numpy 数组中大于某个值的前 n 个元素?