将新列添加到表轨后更改搜索查询

时间:2016-05-07 16:01:43

标签: ruby-on-rails ruby-on-rails-4

现在我使用此搜索在我的数据库中查找特定类别的项目

 @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 它不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

NULL值与等式或不等式不匹配。你必须明确地比较NULL。试试Item.where(detail: nil)

如果您需要0NULL,您可能需要编写原始SQL:Item.where("detail = 0 OR detail IS NULL")

您可能还会考虑回填数据库以消除NULL值,然后您只能与1和0进行比较。