为什么ActiveRecord :: Calculations.maximum返回TIme对象而不是ActiveSupport :: TimeWithZone?

时间:2017-07-14 13:03:05

标签: ruby-on-rails time activesupport

我有一个这样的代码:

Foo.order(:posted_at).last.posted_at

我学会了更好的写作方式。

Foo.maximum(:posted_at)

但我注意到maximum返回Time个对象,而另一种方式返回ActiveSupport::TimeWithZone,据我所知,Rails基本上返回TimeWithZone。为什么maximum会返回正常的Time个对象?

Foo.maximum(:posted_at).class
# Time < Object
Foo.order(:posted_at).last.posted_at.class
# ActiveSupport::TimeWithZone < Object

1 个答案:

答案 0 :(得分:0)

这是Activerecord问题。转化为ActiveSupport::TimeWithZone是在model级别实施的。试试控制台:

model_instance = MyModel.new
t = Time.now # not Time.current
model_instance.created_at.class
t.class # Time
model_instance.created_at = t
model_instance.created_at.class # ActiveSupport::TimeWithZone

maximumcountsum等)implementationmodel不相交,并且不进行此类投射。