我正在创建一个Rails应用程序,允许用户在周日到周六设置可用性,包括开始时间,结束时间和位置(简单字符串)。我有一个User对象,我不确定如何继续。我知道我可以拥有大量的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
然而,这似乎非常低效,尽管创建另一个独特的对象类似乎同样糟糕,只会产生更多的代码行。有没有更简单的方法来实现周日到周六的时间表的开始/结束时间?
谢谢!
答案 0 :(得分:1)
您是否考虑过为一周中的每一天创建具有开始,结束和位置属性的对象?
或者,也可以是具有开始时间,结束时间和位置字段的作业对象(模型)。
通过这种方式,可以执行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
编辑显示活动支持时间类
答案 1 :(得分:1)
乍一看,我使用start_at,end_at,location和day_of_week的属性创建了一个“可用性”模型/类(或者不像“Schedule”那样容易出错的东西) - 并且该类属于用户(以及用户具有“has_many:availability”或“has_many:schedules”)。这似乎(乍一看)是最有效和最容易获取数据的 - 并且您可以使用该单独的类来执行更轻松地将计划/可用性分组在一起的事情。