Rails创建一个星期几和两个日期时间的列

时间:2015-05-30 16:31:58

标签: ruby-on-rails ruby-on-rails-4 activerecord

目前我正在为我的当地足球俱乐部建立一个主页,我希望为每支球队节省训练时间。培训时间将如下所示:

周二18:00-19:30 周四18:30-20:00

在rails中将这些值存储在数据库中的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

这是我的解决方案(可能听起来也可能听起来不太好)。创建两个时间列,每个列代表一天的From和To时间。例如 对于星期一,它在你的数据库中是这样的

|monday_from(time property)|monday_to(time property)|and so on
+--------------------------+------------------------+

希望这会对你有所帮助 编辑:我认为培训活动会定期重复,所以您不必坚持特定日期。

答案 1 :(得分:1)

我建议创建一个练习模型,每个练习都有一个:start和:end属性,每个属性都输入为:datetime。如果你生成这样的迁移:

rails generate model Practice start_time:datetime finish_time:datetime

这将为您的数据库构建迁移,添加您需要的列。请务必运行rake db:migrate来更新开发数据库。

您还必须将此新模型链接到您的团队模型。团队和实践之间的关系似乎是一对多的,所以你要将它添加到你的团队类

class Team < ActiveRecord::Base
  has_many :practices
end

并将相应的关系添加到您的练习模型

class Practice < ActiveRecord::Base
  belongs_to :team
end

(注意在这些方法中使用单数和复数类名称。)

然后,您可以在Practice类中构建一个方法,以便从这两个属性中呈现格式化的日期和时间范围。

def practice_time
  formatted_str = start_time.strftime("%A %H:%M") + " " + finish_time.strftime("%A %H:%M")
end

您可以看到strftime方法here

的更多选项

以逻辑方式存储日期信息后,请随意开发模型和/或帮助程序方法,以更有用的形式返回数据。您还可以考虑使用ActiveAdmin之类的附加内容,以便更轻松地输入和搜索日期。

答案 2 :(得分:0)

您只需将其作为字符串保存到数据库即可。

您还可以创建包含属性,开始时间和结束时间的新模型(或表)。然后,您可以将Time对象保存到数据库。

加载这些Time对象时,您可以创建一个帮助视图来格式化时间。它可以看起来如下:

def format_time(time)
   time.strftime("%A %H:%M")
end