Ruby on Rails

Active Recordでシンプルにunionを実現する

環境

Ruby 2.5.0
Rails 5.2.0

業務的なコードを書いていると、どう工夫しても複雑なSQLに行き着く時はある。

そもそもunionを使うくらいならば
・orで代替できないか
・分割でSQLを発行した方が可読性やパフォーマンスが上がらないか
等々を検討すべきだが、そうはいってもunionを使う場面というのはあると思う。

ということでunionの実装だが、いざunionを実装しようと思ってもネット上ではarel_tableを使ったり複雑めな実装で可読性が低いものが多かった。
(arel_tableは可読性が著しく下がる場合が多いので個人的には使いたくない)

そこで紹介するのがactive_record_unionというgem。
使い方はいたってシンプル。

Gemfileにgemを追加して

例えば以下のコードを書けば

以下のSQLが発行される。

とても簡単に書けますね。

参考: https://github.com/brianhempel/active_record_union

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です