Ruby Rails - created_at字段为零

时间:2015-08-27 00:20:09

标签: ruby-on-rails postgresql timezone timestamp

我想在我的数据库中保存EST的时间。我希望rails将其作为存储在DB中的时间读取。我将config / application.rb文件中的设置更改为此

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}  

但是当我通过rails获得记录时,它给了我这个

<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字段返回nil?需要进行哪些更改才能将created_at字段读取为存储在DB中的日期时间?

1 个答案:

答案 0 :(得分:1)

config.active_record.default_timezone确定从数据库中提取日期和时间时是否使用Time.local(如果设置为:local)或Time.utc(如果设置为:utc)。默认值为:utc。

来自http://guides.rubyonrails.org/configuring.html

您不需要在那里设置实际时区,只要您想要本地或utc。

config.active_record.default_timezone = :local