我想搜索一下,看帖子值是false還是nil。Rails哪裏沒有找不到零值
Post.where.not(:top_card => true)
這隻返回假值。我已經證實,如果我做以下任一返回正確的值
Post.where(:top_card => false)
或
Post.where(:top_card => nil)
任何想法我如何能得到驛卒無論是零和虛假的價值?
我使用錯誤的方法來搜索?
我想搜索一下,看帖子值是false還是nil。Rails哪裏沒有找不到零值
Post.where.not(:top_card => true)
這隻返回假值。我已經證實,如果我做以下任一返回正確的值
Post.where(:top_card => false)
或
Post.where(:top_card => nil)
任何想法我如何能得到驛卒無論是零和虛假的價值?
我使用錯誤的方法來搜索?
使用類似Post.where(top_card: [false, nil]
。
將產生SELECT * FROM posts WHERE (posts.top_card IN (false, nil))
Post.where("top_card != ? OR top_card IS NULL")
請注意,這將與字符串領域工作,同時通過@Vucko接受的答案不會。即在您無法在查詢中放入所有選項的詳盡列表的情況下。
例如這將工作
User.where.not("status != ? OR status IS NULL", "active")
用'Post.where(top_card嘗試:?[假,零]' – Vucko
@Vucko,完美的工作,請問[]工作時它把它看作一個數組,它只是遍歷查找所有的值?另外,如果你提交這個答案,我會把它作爲正確的 –