没有找到零值的Rails

时间:2014-12-21 23:34:23

标签: ruby-on-rails ruby where

我正在尝试搜索帖子值是false还是nil。

Post.where.not(:top_card => true)

这只返回false值。我已经确认,如果我执行以下任一操作,则会返回正确的值

Post.where(:top_card => false)

Post.where(:top_card => nil)

知道如何使用nil和false值获取帖子吗?

我使用错误的方法进行搜索吗?

2 个答案:

答案 0 :(得分:3)

Post.where(top_card: [false, nil]一样使用。

哪会产生SELECT * FROM posts WHERE (posts.top_card IN (false, nil))

请参阅Rails guides - Subset Conditions

答案 1 :(得分:1)

Post.where("top_card != ? OR top_card IS NULL")

请注意,这将适用于字符串字段,而@Vucko接受的答案则不会。即,如果您无法在查询中列出所有选项的详尽列表。

e.g。这将有效

User.where.not("status != ? OR status IS NULL", "active")

感谢this forum