Rails3のActiveRecordでtimezoneが適用されない問題
※ この記事は最後まで読んでください。
Ruby on Rails3 では、設定ファイル(config/application.rb)に
config.time_zone = 'Tokyo'
とすることで、タイムゾーンを指定できる。
でも、そのままActiveRecordを利用してデータを保存しても、
created_at, updated_at はUTCとして保存されてしまう。
今回は、根が深そうだったので、
config/initializers/time_formats.rb
に
Time::DATE_FORMATS[:local] = lambda {|time| time.localtime.to_s(:db) }
とし、ビュー側では
<%= post.updated_at.to_s(:local) %>
とすることで回避
追記
なんか application.rb に
config.time_zone = 'Tokyo' config.active_record.default_timezone = :local
を追記するだけで、DBに保存する日付も問題なく動作するらしいので、
こちらのほうがよいかと思います。