Sequelでクエリを作成しようとしていますが、少し問題が発生しています。
基本的に、いくつかのハッシュがあり、それぞれにいくつかの条件が含まれています。各ハッシュの条件は、それ自体の中でANDを実行し、条件の各グループ内でORを実行する必要があります。
例えば:
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はクエリで複数の条件を必要とするため、エラーをスローします。where
最初の条件をaに、残りをaにポップする以外はor
、少し醜いでしょう:
query.where(condition.first)
conditions[1..-1].each do |condition|
query = query.or(condition)
end
それを行うためのより良い方法はありますか?