活动记录不包括零

时间:2018-04-13 16:39:59

标签: ruby-on-rails activerecord

这个问题建立在此基础之上 active record where method and not

Item.where("color != ?", 'red')或带有.where.not的模拟不会返回nil值。如何查询以包含这些内容?

1 个答案:

答案 0 :(得分:3)

底层问题是SQL数据库如何与NULL进行比较,而不是Rails或ActiveRecord的工作方式。如果您想要颜色为NULL的记录,则必须使用类似where color IS NULL的内容明确包含它们。 NULL不被视为"不是红色"。最终,要获得所需内容,SQL中需要or来涵盖这两种情况。

在ActiveRecord中,你需要这个:

Item.where("color != ? or color is null", 'red')

你也可以这样做:

Item.where("color != ?", 'red').or(Item.where(color: nil))