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

さらに一行追加して、このように記述すると、データベースにもローカル時刻の値がそのまま保存されるようになります。