ruby-on-rails - 在 Rails 模型中使用持续时间字段

标签 ruby-on-rails ruby time duration

我正在寻找在 Rails 模型中使用持续时间字段的最佳方法。我希望格式为 HH:MM:SS(例如:01:30:23)。使用的数据库是本地的 sqlite 和生产中的 Postgres。

我也想使用这个字段,这样我就可以查看该字段中的所有对象,并计算出该模型中所有对象的总时间,最后得到如下内容:

30 records totaling 45 hours, 25 minutes, and 34 seconds.

那么什么最适合?

  • 迁移的字段类型
  • CRUD 表单的表单字段(小时、分钟、秒下拉列表?)
  • 生成模型中所有记录的总持续时间的成本最低的方法

最佳答案

  • 在您的数据库中存储为整数(可能是秒数)。
  • 您的报名表将取决于具体的用例。下拉菜单很痛苦;最好在小时 + 分钟 + 秒的持续时间内使用小文本字段。
  • 只需对持续时间列运行 SUM 查询即可生成总计。如果您使用整数,这将简单快捷。

另外:

  • 使用助手在您的 View 中显示持续时间。您可以使用 123.seconds(将 123 替换为数据库中的整数)轻松地将秒数整数形式的持续时间转换为 ActiveSupport::Duration ).在生成的 Duration 上使用 inspect 以获得漂亮的格式。 (它并不完美。您可能想自己写点东西。)
  • 在您的模型中,您可能需要属性读取器和写入器返回/获取 ActiveSupport::Duration 对象,而不是整数。只需定义 duration=(new_duration)duration,它们在内部调用带有整数参数的 read_attribute/write_attribute。<

关于ruby-on-rails - 在 Rails 模型中使用持续时间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051465/

相关文章:

ruby - 使 Ruby 控制台执行更加冗长

python - 使用 IPython 测量(最大)内存使用情况——类似于 timeit 但 memit

Excel 2010 : Hours and Minutes extract from hh:mm:ss formatted cell

ruby-on-rails - 从 ID 需要匹配文本字符串的数据库中提取数据时,如何匹配数据库 ID?

ASP.Net MVC 与 Ruby on Rails

ruby - 类型错误:无法将 Net::HTTPOK 转换为字符串

C 编程时间和时钟函数

ruby-on-rails - Sphinx 增量索引——仍然需要重建主索引吗?

ruby-on-rails - ActiveRecord 未使用 .build 在 has_many 关联上设置外键

ruby - Ruby 中命名空间的不同方式