如何在Rails模型中存储时间长度?

时间:2011-04-03 21:59:33

标签: ruby-on-rails-3 model timespan

我可以想到两个解决方案:

1)将小时,分钟,秒等存储在数据库的不同列中

  • 下行:很多专栏

2)转换并存储秒数

  • 我们仍然希望能够在表单中显示小时,分钟,秒等的单独字段。我们可以为每个这些编写虚拟属性,并编写一个before_save回调,将timepan转换为秒(仍然很麻烦)。

我错过了其他一些明显的解决方案吗?你是怎么做到这一点的?

2 个答案:

答案 0 :(得分:3)

我投票支持一个列来跟踪持续时间。这样可以保持持续时间的标准化,而您需要做的工作量几乎与标准化多列持续时间一样多。

Rails(activesupport)还为您提供了与时间协作的精彩方法。例如,如果持续时间以秒为单位,您可以轻松地将持续时间(以秒为单位)添加到某个时间点并获得结束时间:

end_time = Time.now + duration_in_secs

使用虚拟属性来分离它有点多了,但根据我的经验,这不是更多的工作。也许有一个简化它的插件或宝石。

答案 1 :(得分:1)

如果我通过表单上的3个字段接收输入,我更喜欢在数据库中有单独的列 - 它使事情更清晰,更简单(毕竟,现在表中的一些额外的列并不多担心)。然后你需要的只是一个很好的输出东西的方法。