一連の条件があるとします。
Person.where{(name =~ 'Ernie%') & (salary < 50000) | (name =~ 'Joe%') & (salary > 100000)}
...次のように SQL を生成します。
SELECT "people".* FROM people
WHERE ("people"."name" LIKE 'Ernie%' AND "people"."salary" < 50000)
OR ("people"."name" LIKE 'Joe%' AND "people"."salary" > 100000)
返されたセットを反転するにはどうすればよいですか。つまり、次の sql を返すように Squeel を更新します。
SELECT "people".* FROM people
WHERE NOT(("people"."name" LIKE 'Ernie%' AND "people"."salary" < 50000)
OR ("people"."name" LIKE 'Joe%' AND "people"."salary" > 100000))
私の問題には動的に生成された一連の条件も含まれているため、これは少し不自然です。実際の条件を変更することはできませんが、NOT() でラップする必要があるだけです。
どこを見るべきかについてのアイデアや提案はありますか?