我想链接多个 OR 条件。现在我把它们像一根绳子一样链起来。NULL
但是我有大约 10-20 个值我想用一个OR
子句来检查。
这有效:
Model.where("foo is NULL OR bar is NULL")
但我宁愿有类似(伪代码)的东西:
Model.where("[:foo, :bar] IS NULL")
我想链接多个 OR 条件。现在我把它们像一根绳子一样链起来。NULL
但是我有大约 10-20 个值我想用一个OR
子句来检查。
这有效:
Model.where("foo is NULL OR bar is NULL")
但我宁愿有类似(伪代码)的东西:
Model.where("[:foo, :bar] IS NULL")
ActiveRecord 不支持开箱即用的链接“或”,但在您的情况下并不是很困难:
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})
自然这不支持自动表名解析,但在大多数情况下它应该可以解决问题。