2014-12-21 61 views
2

我想搜索一下,看帖子值是false還是nil。Rails哪裏沒有找不到零值

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

這隻返回假值。我已經證實,如果我做以下任一返回正確的值

Post.where(:top_card => false) 

Post.where(:top_card => nil) 

任何想法我如何能得到驛卒無論是零和虛假的價值?

我使用錯誤的方法來搜索?

+1

用'Post.where(top_card嘗試:?[假,零]' – Vucko

+0

@Vucko,完美的工作,請問[]工作時它把它看作一個數組,它只是遍歷查找所有的值?另外,如果你提交這個答案,我會把它作爲正確的 –

回答

3

使用類似Post.where(top_card: [false, nil]

將產生SELECT * FROM posts WHERE (posts.top_card IN (false, nil))

多見於Rails guides - Subset Conditions

+0

我認爲以下也應該工作:'Post.where(「top_card!=?」 ,真)' – Humza

+0

我很好奇知道爲什麼代碼'Post.where.not(:top_card => true)'不起作用? –

+0

它應該工作。創建一個新的問題你發出併發布你的代碼。 – Vucko

1

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

請注意,這將與字符串領域工作,同時通過@Vucko接受的答案不會。即在您無法在查詢中放入所有選項的詳盡列表的情況下。

例如這將工作

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

感謝this forum