Ruby 如何使用and或进行Sequel查询链接
我试图在Sequel中构建一个查询,这给我带来了一些麻烦 基本上我有几个散列,每个散列包含几个条件。每个散列中的条件需要在其自身和/或每组条件内进行转换 例如:Ruby 如何使用and或进行Sequel查询链接,ruby,sequel,Ruby,Sequel,我试图在Sequel中构建一个查询,这给我带来了一些麻烦 基本上我有几个散列,每个散列包含几个条件。每个散列中的条件需要在其自身和/或每组条件内进行转换 例如: conditions = [ { :id => 123, :published => true }, { :id => 456, :published => false } ] 应产生: SELECT * FROM item WHERE ((id = 123 AND published = true)
conditions = [
{ :id => 123, :published => true },
{ :id => 456, :published => false }
]
应产生:
SELECT * FROM item WHERE ((id = 123 AND published = true) OR (id = 456 AND published = false))
我有:
conditions.each do |condition|
query = query.where(condition)
end
这将把所有的东西都放在一起,所以:
conditions.each do |condition|
query = query.or(condition)
end
引发错误,因为OR在查询中需要多个条件。除了将第一个条件放入,其中
,将其余条件放入或
,这会有点难看之外:
query.where(condition.first)
conditions[1..-1].each do |condition|
query = query.or(condition)
end
有更好的方法吗?最简单的方法就是将单个查询的结果收集到一个数组中,该数组与在一个查询中获取或组合所有AND子句的方法相同:
results = conditions.map{|c| query.where(c).all}.flatten