Rails 3出错在查询中计数

时间:2011-09-28 14:50:54

标签: ruby ruby-on-rails-3

我正在尝试获取尚未阅读的邮件数量。

Message模型有一个名为read_at的列。如果消息已被读取,则read_at中有一个值,如果未读,则该值为nil。

我有一条读取消息和一条未读消息。我得到0个未读消息(我应该得到1)。这是代码:

Message.all(:conditions => 
  ['website_id = ? AND read_at = ?', current_website.id, nil]).count

似乎查询是正确的,因为开发日志显示了我

Message Load (0.2ms)  SELECT "messages".* FROM "messages" 
                        WHERE (website_id = 2 AND read_at = NULL)

2 个答案:

答案 0 :(得分:3)

而不是read_at = NULL 试试read_at is null,它是一个SQL的东西。

:conditions => ['website_id = ? AND read_at is ?', current_website.id, nil]

这是一篇关于SQL nulls的简短文章,以及如何使用它们:

http://www.w3schools.com/sql/sql_null_values.asp

希望有所帮助


答案 1 :(得分:2)

虽然问题是@pdjota指出的问题,但你应该使用Rails 3表示法,这是我写它的方式:

Message.where('website_id = ? AND read_at IS NULL', current_website.id).count