Проблема с часовым поясом Rails 3 (база данных не работает 5 часов) - PullRequest
2 голосов
/ 06 февраля 2012

Так у меня в рельсах консоль.Это то, что я получаю, если я проверяю Time.now:

1.9.2p290 :014 > Time.now
 => 2012-02-06 01:00:43 -0500 
1.9.2p290 :015 > Time.now.zone
 => "EST"

В моем 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>

Почему пять часов?Если я сравниваю зоны каждой из них, вот что я получаю:

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

Ответы [ 2 ]

3 голосов
/ 06 февраля 2012

Хорошо, я исправил проблему.Похоже, эта строка в application.rb вызывала проблему.config.active_record.default_timezone = 'Восточное время (США и Канада)'

ActiveRecord будет использовать местный часовой пояс по умолчанию в соответствии с документами ActiveRecord :: Timestamp.http://api.rubyonrails.org/classes/ActiveRecord/Timestamp.html

0 голосов
/ 09 октября 2013

в AR 3.2.1, вы должны либо установить эту опцию на: utc или: local, либо вы получите это предупреждение:

предупреждение:: параметр database_timezone должен быть: utc или: local - по умолчанию: local

...