2015-08-27 2 views
0

Я хочу сохранить время в EST в моей БД. И я хочу, чтобы рельсы читали его как время, хранящееся в БД. Я изменил настройки в моей конфигурации/application.rb файл в этомRuby Rails - created_at field is no

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

И теперь, когда я сохраняю записи в БД они хранятся надлежащим образом с EST в created_at поля. Второе поле создается на это прямо из Postgres:

4453 | 2015-08-26 20:04:07.023224 | mlb | team_scores_first | fg  | 0 | 2015-08-24 | {"away":"NYM","home":"PHI"}        |   1104 |   1103 | 541220 | {"away":-225.0,"home":185.0} 

Но когда я получаю запись через рельсы она дает мне эту

<Line id: 4453, created_at: nil, league: "mlb", bet_type: "team_scores_first", period: "fg", book: 0, date: "2015-08-24", names: {"away"=>"NYM", "home"=>"PHI"}, away_team_id: 1104, home_team_id: 1103, game_id: 541220, line: {"away"=>-225.0, "home"=>185.0}> 

Почему Rails возвращающегося ноль для created_at поле? Какие изменения необходимо сделать, чтобы поле created_at могло быть прочитано как дата-время, хранящееся в БД?

ответ

1

config.active_record.default_timezone определяет, следует ли использовать Time.local (если установлено значение: local) или Time.utc (если установлено: utc) при выводе дат и времени из базы данных. По умолчанию: utc.

От http://guides.rubyonrails.org/configuring.html

Вы не установить фактический часовой пояс там, только если вы хотите локальным или МЫ.

config.active_record.default_timezone = :local 
+0

если я меняю это, тогда рельсы читают все в часовой пояс UTC. Я хочу EST – appleLover

+0

В соответствии с документами он должен сделать обратное, попробуйте перезагрузить сервер. Также попробуйте установить это значение в: utc и посмотреть, дает ли это правильное время. – dinomix