【问题标题】:timestamps in rails - datetime or UNIX timestamp?rails 中的时间戳 - 日期时间或 UNIX 时间戳?
【发布时间】:2011-10-01 09:39:40
【问题描述】:

我目前正在向大学教授介绍一个项目,他不喜欢我的 rails 应用程序使用 DATETIME 将其时间戳存储在数据库中(他不知道或似乎不喜欢 rails :)。 他说这会由于时区不同而导致问题,我应该将其作为 UNIX 时间戳(整数)保存到数据库中。

现在我想设计 rails 的人有理由这样存储它,并且时间戳字段会自动添加到任何迁移中,我想问你们

a) 如果我可以修改 rails 默认迁移以默认使用 UNIX 时间戳

b) 关于这种方法的优缺点

【问题讨论】:

    标签: ruby-on-rails datetime timestamp unix-timestamp


    【解决方案1】:

    我的意见与你教授的相反。使用 Rails 很容易正确处理日期时间类型和时区问题。

    a) 我不确定是否要更改默认设置,但这里有一个相关问题。 Ruby on Rails: why ActiveRecord uses "datetime" type instead of "timestamp" for timestamp fields? b)这是一个相关的问题,答案很好。 In Ruby on Rails, what's the difference between DateTime, Timestamp, Time and Date?

    【讨论】:

      【解决方案2】:

      Rails 2.2 及更高版本支持 i18n(国际化)开箱即用。这包括处理数据库中的时区和日期时间格式以及视图。查看国际化 API here 的 Rails 指南。

      具体来说,您可能会寻找时间助手。我建议您确保将 UTC 格式 DATETIMES 存储在数据库中,然后使用时间助手将其转换为最终用户区域设置的正确时间。

      在 /config/application.rb 中指定时区,如果您使用正确的 Time 助手,Rails 将为您处理其他所有事情。

      【讨论】:

      • 抱歉回复晚了。但是例如我有一个 created_at 字段的评论,我在我的网站上显示它(我的应用程序有一个特定的时区),所以它显示在应用程序时区,无论我从世界的哪个地方看评论。所以也许我写了一条评论,在它以错误的时间显示给我之后,我该怎么做?
      • @Frank,听起来你想知道如何检测每个用户的时区。这与您最初发布的问题不同,这里的解决方案概念看起来不错stackoverflow.com/questions/13/…。你只需要将它应用到你的 Rails 应用程序。
      • Rails 解决方案的另一个链接spongetech.wordpress.com/2009/02/27/…
      猜你喜欢
      • 2010-10-02
      • 2020-10-19
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多