我有一个简单的数据库查询,检查特定字段不是否包含3x字符串:
scope :not_abc, -> {
where.not(name: ['A', 'B', 'C'])
}
有问题的字段只是一个没有默认值的字符串,来自schema.rb:
t.string "name", limit: 255
问题是上面的查询只返回非零的字段,例如:
返回的对象:
name = ""
OR
name = "<any string NOT A,B,C>"
忽略的对象:
name = nil
OR
name = "A" or "B" or "C"
有没有办法构建一个使用字符串数组进行搜索但在结果中包含nil值的rails查询?
应返回的内容:
name = nil
OR
name = ""
OR
name = "<any string NOT A,B,C>"
答案 0 :(得分:0)
遇到同样的问题,找到了here
以下是适用的版本范围。
scope :not_abc, -> {
where("name NOT IN (?) OR name IS NULL", ['A', 'B', 'C'])
}