【发布时间】:2015-04-21 23:53:55
【问题描述】:
我知道我能做到:
Time.use_zone("St. Petersburg"){
Foo.create!(
topic: "foo", begins_at: "2015-06-01", ends_at: "2015-06-02"
)
}
有没有更优雅的方法来做到这一点?比如:
Foo.create!(
topic: "foo", begins_at: "2015-06-01", ends_at: "2015-06-02",
timezone: "St. Petersburg"
)
【问题讨论】:
-
为什么要使用当地时间的时间戳?它会使任何查询或比较变得非常复杂。
-
*_at列是 postgres 的timetamp without time zone。我的应用程序中所有表的所有日期时间列的所有数据都是 UTC,包括在这种情况下。用户提供的数据在用户的时区中。所以在上面的第一个代码示例中,用户提交的数据在写入数据库之前被有效地转换为 UTC。
标签: ruby-on-rails activerecord timezone