LoginSignup
16
14

More than 5 years have passed since last update.

【Ruby on Rails】タイムゾーンの設定(5.1系)

Last updated at Posted at 2018-07-14

はじめに

Ruby on Railsの基本設定ですが、少し困った経緯もあり記載。

設定方法

config/application.rb
class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.1

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.

    # Only loads a smaller set of middleware suitable for API only apps.
    # Middleware like session, flash, cookies can be added back manually.
    # Skip views, helpers and assets when generating a new resource.
    config.api_only = true

    ### Railsが表示の際に扱うタイムゾーン ←ココ
    config.time_zone = 'UTC'

    ### Rails(Activerecord)がDBへのRead・Writeを行う際タイムゾーン ←ココ
    config.active_record.default_timezone = :utc 

  end
end

設定例

DBへの保存はUTCで画面表示もUTC

config.time_zone = 'UTC'
config.active_record.default_timezone = :utc 

DBへの保存はJSTで画面表示もJST(日本時間)

:localはシステム時間を参照しているのでサーバーのTimezoneを'Asia/Tokyo'にする必要があります!

config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local 

DBへの保存はUTCだけど画面表示はJST(日本時間)

config.time_zone = 'Tokyo'
config.active_record.default_timezone = :utc 

備考

ActiveRecordでselectを利用してカラム名を指定した場合に日付の戻り型がTime型になっており、上記の設定が自動的に反映されませんでした。特に「DBへの保存はUTCだけど画面表示はJST」で困りました。

16
14
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
16
14