Rails活跃记录'其中'方法异常

时间:2017-06-02 16:39:11

标签: ruby-on-rails postgresql activerecord

我在rails控制台中尝试了以下语句:

SomeModel.where(["active = ? and price = ? and status_date <= ?", true , nil , Date.parse('20161101')]).size

这给了我>> 0

然后我将上述声明修改为:

SomeModel.where([ "active = ? and status_date <= ?", true , Date.parse('20161101') ]).where(price: nil).size

这给了我>> 533

有人可以解释为什么会这样吗?为什么这两个语句没有给出相同的输出?

规格:Rails 5.0.0,Postgres

1 个答案:

答案 0 :(得分:3)

要与NULL进行比较,查询必须为price IS NULL而不是price = NULL

使用where(price: nil)将为您生成正确的SQL,而参数值为price = ?的{​​{1}}将无法与任何记录匹配。