我正在尝试搜索帖子值是false还是nil。
Post.where.not(:top_card => true)
这只返回false值。我已经确认,如果我执行以下任一操作,则会返回正确的值
Post.where(:top_card => false)
或
Post.where(:top_card => nil)
知道如何使用nil和false值获取帖子吗?
我使用错误的方法进行搜索吗?
答案 0 :(得分:3)
像Post.where(top_card: [false, nil]
一样使用。
哪会产生SELECT * FROM posts WHERE (posts.top_card IN (false, nil))
答案 1 :(得分:1)
Post.where("top_card != ? OR top_card IS NULL")
请注意,这将适用于字符串字段,而@Vucko接受的答案则不会。即,如果您无法在查询中列出所有选项的详尽列表。
e.g。这将有效
User.where.not("status != ? OR status IS NULL", "active")