0
私はこのようなコードを持っていた:なぜActiveRecord :: Calculations.maximumは、ActiveSupport :: TimeWithZoneの代わりにTImeオブジェクトを返しますか?
Foo.order(:posted_at).last.posted_at
を、私はそれを書くためのより良い方法を学びました。別の方法はActiveSupport::TimeWithZone
返し、私の知る限りではRailsは基本的にTimeWithZone
を返しながら
Foo.maximum(:posted_at)
は、しかし、私は
maximum
戻り
Time
オブジェクトに気づきました。なぜ
maximum
が通常の
Time
オブジェクトを返しますか?
Foo.maximum(:posted_at).class
# Time < Object
Foo.order(:posted_at).last.posted_at.class
# ActiveSupport::TimeWithZone < Object
これは 'activerecord'の問題です:モデルのインスタンス化と計算(max、sumなど)は異なる方法になります。 Modelインスタンスは 'ActiveSupport :: TimeWithZone'にキャストしますが、計算コードはモデルコードと交差せず、キャストは行いません –
ありがとう!コメントを回答として投稿すると、私はそれを受け入れます。 – ironsand