Rails活动记录时区

时间:2014-10-08 05:31:32

标签: ruby-on-rails postgresql timezone rails-activerecord

我已将应用程序的默认时区设置为太平洋时间。

config.time_zone = 'Pacific Time (US & Canada)'
config.active_record.default_timezone = 'Pacific Time (US & Canada)'

我面临的问题是当我在rails console中查询时...例如

Transaction.last 

它返回一个像这样的对象

=> #<Transaction id: 4926, offer_id: 4926, date: "2014-10-08 04:23:03", reference: "CBRNCUQU", driver_id: 464, driver_type: "User", amount: 80.0, status: "paid", created_at: "2014-10-08 04:23:03", updated_at: "2014-10-07 22:15:27">

此处显示的日期字段为date: "2014-10-08 04:23:03",以UTC表示,实际上PDT中的日期为2014-10-07

但如果我像这样查询Transaction.last.date,则返回

Tue, 07 Oct 2014 21:23:03 PDT -07:00

这是正确的和预期的输出

我面临的问题是,我想在我的页面中显示当前日期交易的详细信息,并在页面中返回具有未来日期的交易。这可能会发生,因为数据库以UTC格式保存记录 有什么方法可以解决这个问题。

1 个答案:

答案 0 :(得分:1)

正如我从api文档http://apidock.com/rails/ActiveRecord/Base/default_timezone/class

中看到的那样

default_timezone仅接受:local:utc