这个错误是怎么回事?我正在运行一个标准查询,如下所示:
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
有任何想法吗?谢谢
这个错误是怎么回事?我正在运行一个标准查询,如下所示:
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
有任何想法吗?谢谢
我遇到了这个问题,解决方案是添加“to_date”,以便它在几天内迭代,如下所示:
time_range = (1.month.ago.beginning_of_month.to_date..1.month.ago.end_of_month.to_date)
我认为您的问题是您正在做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 评论