Ruby on rails Rails 3时区问题(数据库关闭5小时)

Ruby on rails Rails 3时区问题(数据库关闭5小时),ruby-on-rails,time,timestamp,Ruby On Rails,Time,Timestamp,所以在我的rails控制台中。这是我检查时间得到的结果。现在: 1.9.2p290 :014 > Time.now => 2012-02-06 01:00:43 -0500 1.9.2p290 :015 > Time.now.zone => "EST" 在my application.rb中,我将时区设置如下: config.time_zone = 'Eastern Time (US & Canada)' config.active_record.defa

所以在我的rails控制台中。这是我检查时间得到的结果。现在:

1.9.2p290 :014 > Time.now
 => 2012-02-06 01:00:43 -0500 
1.9.2p290 :015 > Time.now.zone
 => "EST"
在my application.rb中,我将时区设置如下:

config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = 'Eastern Time (US & Canada)'
但是,当我将某些内容存储到数据库中时,仍然需要5个小时:

1.9.2p290 :011 > event = Event.new(:message => 'blah', :status_id => 1, :service_id => 1, :created_at => Time.now)
 => #<Event id: nil, message: "blah", status_id: 1, service_id: 1, created_at: "2012-02-06 05:55:26", updated_at: nil>

好的,我解决了这个问题。看起来application.rb中的这一行导致了问题。 config.active_record.default_时区='东部时间(美国和加拿大)'


根据ActiveRecord::Timestamp文档,ActiveRecord默认使用本地时区

在AR 3.2.1中,您必须将此选项设置为:utc或:local,否则您将收到以下警告:

警告::database_时区选项必须为:utc或:local-默认为:local

1.9.2p290 :016 > event.created_at.zone
 => "EST" 
1.9.2p290 :017 > Time.now.zone
 => "EST"