さて問題
ActiveRecordでこんなクエリ( where 句)を作るにはどうしたら良いでしょうか?
where A and (B or C or D) and (E or F)
答え
Model.where(A)
     .merge(Model.where(B).or(Model.where(C)).or(Model.where(D)))
     .merge(Model.where(E).or(Model.where(F)))
merge() を使うと、 or() の部分をグルーピングすることができます。
SQLの条件組み立ては and で条件を絞り込んでいくのが基本ですから、 or の部分はまとめて and でつないでいきましょう。
or() はどこでグルーピングがどこに入るのか予測不可能なことが多いですが、merge() と併用するとグルーピングを明示的に制御できるようになります。
答えの2行目、閉じカッコ一つ少ない気がします。