セットアップは次のとおりです。
end_date = DateTime.parse('2010-01-01 12:00:00-04')
そして時々初期化されます:
end_date = 1.days.ago
質問...これらのnamed_scopeは同じ正確なSQLを生成しますか?
named_scope :before, lambda { |end_date|
{ :conditions =>
["overdraft_transaction_payments.created_at < ?", end_date] }
}
と
named_scope :before, lambda { |end_date|
{ :conditions =>
["overdraft_transaction_payments.created_at < ?", end_date.utc] }
}
最初の例では end_date を使用し、2 番目の例では end_date.utc を使用しています。
(注意が必要かもしれません.... DBサーバーのOSはCDTに設定されており、DBは内部的にUTCを使用しています.RailsサーバーのOSはCDTに設定されており、アプリケーションインスタンスはEDTに設定されています.これはおそらくこれらのシステムを構成する最適な方法ではありませんが、当面の問題は ActiveRecord 出力です。)
私の直感では、最初の例ではローカル TZ の時刻文字列が生成され、2 番目の例では UTC-0 が生成されます。
PS: 私の直感を検証するために使用できるミニ テスト ケースはありますか?