我想链接多个OR条件。现在我把它们串起来像一根绳子。但是我想要使用NULL
子句检查OR
大约10到20个值。
这有效:
Model.where("foo is NULL OR bar is NULL")
但我宁愿有类似(伪代码)的东西:
Model.where("[:foo, :bar] IS NULL")
答案 0 :(得分:2)
ActiveRecord不支持开箱即用的“OR”链接,但在您的情况下并不是很难:
fields = %w{foo bar}
Model.where(fields.map{|f| "#{f} IS NULL"}.join(" OR "))
如果您经常发现需要这种方法,您甚至可以将其提取为可重复使用的方法:
module ActiveRecord
class Base
class << self
def any_null(fields)
where(fields.map{|f| "#{quote_column_name f} IS NULL"}.join(" OR "))
end
end
end
end
现在你可以致电:
Model.any_null(w%{foo bar})
当然,这不支持自动表名解析,但在大多数情况下它应该可以解决问题。