现在我使用此搜索在我的数据库中查找特定类别的项目
@items=Item.where(:category_id => @active_category_id).order(:price)
但最近我在名为Item
的{{1}}表中添加了一列。它可以是0或1并且它是detail
或者它可以是空的因为我刚刚添加它并且我已经在我的数据库中有一些项目。
所以现在我需要两次搜索:我需要搜索返回integer
detail=1
不是1。
所以我这样做:
detail
#for items with detail = 1
它正在发挥作用。
但现在我需要找到@items=Item.where(:category_id => @active_category_id)
.where(:detail=> 1).order(:price)
所以我写了
detail != 1
它不起作用。我该怎么办?
答案 0 :(得分:0)
NULL
值与等式或不等式不匹配。你必须明确地比较NULL
。试试Item.where(detail: nil)
。
如果您需要0
或NULL
,您可能需要编写原始SQL:Item.where("detail = 0 OR detail IS NULL")
您可能还会考虑回填数据库以消除NULL
值,然后您只能与1和0进行比较。