ActiveRecord::Base.default_timezone の初期値

  • 19
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

ちょっと気になったので調べてみました。

Railsの場合

:utc が設定されています。
https://github.com/rails/rails/blob/3-2-stable/activerecord/lib/active_record/railtie.rb#L47

irb(main):001:0> Rails.version
=> "3.2.13"
irb(main):002:0> ActiveRecord::Base.default_timezone
=> :utc

単体で使った場合

:local が設定されてます。
https://github.com/rails/rails/blob/3-2-stable/activerecord/lib/active_record/base.rb#L376

[1] 2.0.0-p0(main)> require 'active_record'
=> true
[2] 2.0.0-p0(main)> ActiveRecord::VERSION::STRING
=> "3.2.13"
[3] 2.0.0-p0(main)> ActiveRecord::Base.default_timezone
=> :local

ただ、ver4.0 からは :utc がデフォルトになるようです。
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/core.rb#L53

[1] 2.0.0-p0(main)> require 'active_record'
=> true
[2] 2.0.0-p0(main)> ActiveRecord::VERSION::STRING
=> "4.0.0.beta1"
[3] 2.0.0-p0(main)> ActiveRecord::Base.default_timezone
=> :utc

単体で使っている場合は、今のうちに明示的に指定しておいた方がよさそうですね。