我正在尝试获取尚未阅读的邮件数量。
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)
答案 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