我目前正在向我的大学教授提交一个项目,他不喜欢我的rails应用程序使用DATETIME将其时间戳存储在数据库中(他不知道或者似乎不喜欢rails :)。 他说这会因为不同的时区而导致问题,我应该把它作为UNIX时间戳(整数)保存到数据库。
现在我想设计rails的人有理由这样存储它,并且因为时间戳字段会自动添加到任何迁移中,我想问你们这些人
a)如果我可以修改rails默认迁移以默认使用UNIX时间戳
b)关于这种方法的利弊
答案 0 :(得分:1)
Rails 2.2及更高版本支持开箱即用的i18n(国际化)。这包括处理数据库中的时区和日期时间格式以及视图。请查看国际化API here的rails指南。
具体来说,你可能正在研究时间助手。我建议您确保将UTC格式DATETIMES存储在数据库中,然后使用时间帮助程序将其转换为最终用户区域设置的正确时间。
在/config/application.rb中指定时区,如果使用正确的Time
助手,Rails将为您处理其他所有事情。
答案 1 :(得分:1)
我的观点与你的教授相反。使用Rails很容易正确处理Datetime类型和时区问题。
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?