LoginSignup
0
1

More than 3 years have passed since last update.

ActiveRecordのdefault_timezoneについて

Last updated at Posted at 2021-01-16

想定バージョン

Ruby 2.5系
Ruby on Rails 5.2系

説明

ActiveRecordが発行するタイムスタンプのtimezoneはRailsの場合、config/application.rbで定義します。

# config/application.rb 

Rails.application.configure do
  config.active_record.default_timezone = :local
  # (ActiveRecord::Base.default_timezone = :localと同義)
  中略
end

この:localは何を指しているのかというとrubyプロセスタイムゾーンを指していて
rubyプロセスタイムゾーンはOSに定義されている環境変数のTZを見ています。
つまりこの環境変数を設定しないとActiveRecordはdefaultのUTCでタイムスタンプを発行してしまうことになります。

例えば以下のように定義すると、 created_atやupdated_atが東京の時間になります。

TZ=Asia/Tokyo

config.time_zoneとの違い

Railsで設定するタイムゾーンといえば、以下の方もあると思います。

Rails.application.configure do
  config.time_zone = 'Tokyo'
end

こちらはTime.zoneで取得するタイムゾーンを東京にできる設定となっています。

アプリケーション上でTime.zone.nowを叩くと東京の現在の時間が取得できるようになります。

参考

Railsタイムゾーンまとめ

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1