Posted at

ActiveRecord::Base.default_timezone の初期値

More than 5 years have passed since last update.

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


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

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