テーブルに現在日時を登録する際に、日本時間をデフォルトで入力させる設定
Railsで、テーブルへ現在日時を登録する際に、なぜかUTC時間に
なっていたので、より良い設定方法を調査。
まずモデル経由で現在日時を登録する際、例えば以下の文を書いていました。
transfer = Transfer.new
transfer.tid = targetId
transfer.flag = 1
transfer.entry_date = Time.zone.now()
transfer.update_date = Time.zone.now()
transfer.save
(created_atとかupdate_atを使えばいいじゃないかというご指摘もあるかと
思いますが、こういう体でお願いします)
さて、この場合、なぜか、UTC時間が登録されてしまい、上手く行かない。
9時間ずれてしまっていた。
諸処調査の結果、以下の対処で解決
application.rb内のプロジェクト配下に以下を追記
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local
※タイムゾーン指定名は’Asia/Tokyo’じゃないかということを書いてある記事も
どこかで見かけた気がするけど、上記が正解だった(私の環境では。Rails4です)
【参考文献】
RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita
あともう一つあった気がするけど、思い出したら追記しておきます。