我有一个简单的DB查询,正在检查一个特定的字段是否不包含3x字符串:
scope :not_abc, -> {
where.not(name: ['A', 'B', 'C'])
}
有问题的字段只是一个没有默认值的字符串,来自schema.rb:
t.string "name", limit: 255
问题是上面的查询只返回非nil的字段,例如:
返回对象:name = ""
OR
name = "<any string NOT A,B,C>"
忽略对象:
name = nil
OR
name = "A" or "B" or "C"
是否有任何方法来构建一个rails查询与字符串数组搜索,但在结果中包括nil值?
应该返回什么:
name = nil
OR
name = ""
OR
name = "<any string NOT A,B,C>"
得到了同样的问题,并在这里找到了解决方案
这是你的作用域在一个版本应该工作。
scope :not_abc, -> {
where("name NOT IN (?) OR name IS NULL", ['A', 'B', 'C'])
}