私は次のスコープを持っています:
scope :this_month, :conditions => ["created_at >= ?", Date.today.beginning_of_month]
これにより、次のSQL出力が作成されますa.response_sets.this_month.to_sql
。
SELECT "response_sets".* FROM "response_sets" WHERE created_at >= '2012-05-01'
しかし、今日は実際には6月1日なので、その日付は間違っているようです。そこで、スコープをバイパスして、次のように条件を直接実行してみました。
a.response_sets.where(["created_at >= ?", Date.today.beginning_of_month]).to_sql
次に、出力します。
SELECT "response_sets".* FROM "response_sets" WHERE created_at >= '2012-06-01'
どちらが正しい。Date.today.beginning_of_month
では、スコープで実行することと、スコープで直接実行することの間に違いがあるのはなぜwhere
ですか?