我想链接多个OR条件。现在,我像字符串一样将它们链接起来。但是我想NULL
用一个OR
子句检查大约10-20个值。
这有效:
Model.where("foo is NULL OR bar is NULL")
但是我宁愿有类似(伪代码)的东西:
Model.where("[:foo, :bar] IS NULL")
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})
自然,这不支持自动表名解析,但是在大多数情况下,它应该可以解决问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句