没有找到零值的Rails

问题描述 投票:2回答:2

我试图搜索帖子值是假还是零。

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

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

Post.where(:top_card => false)

要么

Post.where(:top_card => nil)

知道我怎么能得到nil和false值的帖子?

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

ruby-on-rails ruby where
2个回答
3
投票

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

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

Rails guides - Subset Conditions查看更多信息。


1
投票

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

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

例如这会奏效

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

感谢this forum

© www.soinside.com 2019 - 2024. All rights reserved.