9

このエラーとは何ですか?私は次のような標準クエリを実行しています:

time_range = (1.month.ago.beginning_of_month..1.month.ago.end_of_month)


Feed.find(:all, :conditions => ['created_at = ? AND id not in (?)', time_range, [1,2,3]]).count

何か案は?ありがとう

4

2 に答える 2

21

私はこの問題を抱えていました。解決策は、「to_date」を追加して、次のように何日も繰り返すようにすることでした。

time_range = (1.month.ago.beginning_of_month.to_date..1.month.ago.end_of_month.to_date)
于 2012-06-07T15:25:07.490 に答える
4

あなたの問題はあなたがやっているということだと思いますcreated_at = ?, time_range、そしてtime_rangeは特定の値ではなく、そして=は特定の値を期待します。そのエラーの理由を正確に説明することはできませんが、解決策を得ることができます。

代わりにこれを行ってください、私はそれを試しました、そしてうまくいきます

1.9.3-p125 :014 > time_range = (1.month.ago.beginning_of_month..1.month.ago.end_of_month)
 => Sun, 01 Apr 2012 00:00:00 UTC +00:00..Mon, 30 Apr 2012 23:59:59 UTC +00:00 
1.9.3-p125 :015 > Post.where(:created_at => time_range).where('id not in (?)', [1,2,3]).count
   (0.3ms)  SELECT COUNT(*) FROM "posts" WHERE ("posts"."created_at" BETWEEN '2012-04-01 00:00:00.000000' AND '2012-04-30 23:59:59.999999') AND (id not in (1,2,3))
 => 0 

アップデート

質問に直接関係するわけではありませんが、これらの条件を意味的な意味を持つスコープに配置する必要がFeed.from_last_monthあります。Feed.not_with_ids([1,2,3])

そしてあなたの質問のためにあなたはするでしょう

Feed.from_month.not_with_ids([1,2,3]).count

警告の説明については、以下の@echristophersonコメントを確認してください

于 2012-05-18T18:59:13.133 に答える