ActiveRecord3 のタイムゾーンをローカルに設定する
単純に時刻をローカル(ここでは JST)に設定するだけなら config/application.rb で
config.time_zone = 'Tokyo'
と書くだけのように思えますが、この状態では ActiveRecord 内部の設定では日時が UTC で扱われ、データベースに保存される値も UST から JST に変換される前提で9時間マイナスされた状態で保存されます。
config.time_zone = 'Tokyo' config.active_record.default_timezone = :local
とすると ActiveRecord 内部の時刻はローカル時刻となりますが、データベースに保存される値には相変わらず変換がかけられてしまいます。
config.time_zone = 'Tokyo' config.active_record.default_timezone = :local config.active_record.time_zone_aware_attributes = false
さらに一行追加して、このように記述すると、データベースにもローカル時刻の値がそのまま保存されるようになります。