У меня есть установка, подобная этой:
table = self.arel_table
nodes = [1,2,3].collect do |c|
table[:foo].eq(c).and( table[:bar].eq(c) )
end
Затем я хочу, чтобы объединенные фрагменты условий заканчивались SQL-кодом, похожим на:
WHERE (foo = 1 AND bar = 1) OR (foo = 2 AND bar = 2) OR (foo = 3 AND bar = 3)
Самое близкое, что у меня есть, это:
nodes.inject(nodes.shift) {|memo, node| memo.or( Arel::Nodes::Grouping.new(node) ) }
Я пробовал Arel::Nodes::Grouping.new
по-разному, но он никогда не группирует, как я хочу.