engineers_blogこんにちは。MFクラウド給与の開発を担当しております中村です。なでしこジャパン惜しかったですね。アメリカの序盤の勢いにやられてしまったという感じがしましたが、いい試合だったなぁ、と感動しました。Webサービスの開発をしていると複数のテーブルから同時にデータを取得したいケースがあると思います。railsの場合joinメソッドを使ったりしてできますが、関連するテーブルが3つ以上、更に関連先のテーブルのあるカラムの合計値をという場合、ActiveRecordだけと1回で取得するのが厳しい場合があります。』というgemを使う方法を採用しました。installをするだけOKです。やって使ったか簡単な使い方はgithubのページに書かれているのでここでは割愛し、ここでは今回このgemをどのように使ったのか記述例を示したいと思います。4つのテーブルを参照して条件に合致したユーザのID一覧を返すテーブル名など実際とは違いますが、以下のようなSQLに相当する処理を書きたいとします。(user_insurances.user_type='B')その場合次のように書きます。endend各テーブルのjoinする条件をonメソッドを使って定義して行きます。最終的に条件に合致したUsersテーブルのデータからuser_idカラムの値だけ抽出するのでpluckを使っています。4つのテーブルを参照して条件に合致したユーザが持っているあるカラム(例としてamountとします)の合計値を返す今回は合計値なので、上と若干違います。(user_insurances.user_type='B')合計するデータはuser_balancesテーブルのamountカラムの値になります。これを実現するためにはrubyコードでは以下のように書きます。end大体一緒ですが、最後の合計値を取得するところでselectメソッドでカラムを指定し、sumで合計しamount_sumという名前で取得したUserモデルの算出結果を取得しています。まとめ以上のようにActiveRecordを使っていても複数テーブルが絡む複雑なSQL処理の実装は可能です。言え、こういうのはあくまでも選択肢の一つで可能なら処理を分割したりした方が全体の流れが分かりやすくて良いと思います。今回もできればそうしたかったのですが、「SQL発行回数がどうしても多くなってパフォーマンスがそこまで出せない、1回で取るようにした方が良い」と判断し上記の方法を選択しました。このブログを読まれた方の参考に少しでもなれば幸いです。最後にマネーフォワードでは、Railsエンジニアを募集しています。