そのため、データを取得するために重要な SQL を必要とするデータベースから多くのグラフ/分析を描画しています。生の SQL をたくさん書いて v1 を完成させたので、今度はこれを Arel に変換したいと思います。
多くのクエリには、繰り返されるコードの大きなブロックがあります。Lists
簡単な例として、特定の のすべてについてデータを取得したいことがよくありOrg
ます。アレルでは、これは次のとおりです。
loads_of_other_arel.where(lists_table[:org_id].eq(@org.id))
の繰り返しを次のように因数分解したいとlists_table[:org_id].eq(@org.id)
思います。
loads_of_other_arel.filter_lists_by_org
これは次の方法で実行できます。
def filter_lists_by_org arel
arel.where(lists_table[:org_id].eq(@org.id))
end
を呼び出しfilter_lists_by_org(loads_of_other_arel)
ますが、これは非常に手続き的なようであり、優れた OO プログラマーとして行うべきことではありません。したがって、既存の Arel クラスのいくつかを開いて、それらにいくつかのメソッドをモンキー パッチする必要があるようです。これはよりOOですが、やり過ぎのように感じます-これを行うことを考えるべきですか、それともすべての方法でArelを繰り返すべきですか?