0

我正在创建一个 Rails 应用程序,允许用户设置周日到周六的可用性,包括开始时间、结束时间和位置(简单字符串)。我有一个用户对象,我不确定如何继续。我知道我可以拥有大量的 Time 对象,如下所示:

class User
    field :mondayStartTime, :type => Time
    field :mondayEndTime, :type => Time
    field :mondayLocation, :type => String
    field :tuesdayStartTime, :type => Time
    field :tuesdayEndTime, :type => Time
    field :tuesdayLocation, :type => String
    ...
    field :sundayEndTime, :type => Time
    field :sundayLocation, :type => String
end

然而,这似乎非常低效,尽管创建另一个唯一的对象类似乎同样糟糕并且只会导致更多的代码行。有没有更简单的方法来实现周日到周六时间表的开始/结束时间?

谢谢!

4

2 回答 2

1

您是否考虑过为一周中的每一天创建具有 start、end 和 location 属性的对象?

或者,一个包含开始时间、结束时间和位置字段的 Jobs 对象(模型)。

这样就可以做到 has_many :jobs ,然后您可以按天缩小范围,或按特定日期选择。使用 ruby​​ Time Class 或 ActiveSupport 类(3.days.from_now 等),缩小范围应该是可行的。

irb(main):001:0> require 'active_support/all'
=> true
irb(main):002:0> 2.days.ago
=> 2012-04-03 08:30:31 -0700
irb(main):003:0> 2.days.from_now
=> 2012-04-07 08:33:01 -0700

编辑显示活跃的支持时间类

于 2012-04-05T03:50:36.047 回答
1

乍一看,我会创建一个具有 start_at、end_at、location 和 day_of_week 属性的“可用性”模型/类(或不太容易拼写错误的东西,如“Schedule”),并让该类属于用户(和用户具有“has_many :availabilities”或“has_many :schedules”)。这似乎(再次乍一看)是最有效和最容易获取数据的方法 - 您可以使用该单独的类来更轻松地将计划/可用性组合在一起。

于 2012-04-05T03:58:36.213 回答