なぜこの記事を書こうと思ったか
eager_loadで結合されたテーブルに対して集合関数を使用した際に、少しつまったので記事にしました。
結論
eager_loadは使用しない!
なぜ
eager_loadは他のモデルに対して、検索や並び替えを行いたい時に使用します。ですが、groupメソッドを使用するさいはエラーが発生します。
エラーの理由はeager_loadは結合した全ての列を取得してきます。しかしSQLではGROUP BYを使用したときは取得する列として指定できるのは、GROUP BYで指定したものか集合関数を使用したものになります。
解決方法
では、他のモデルに対して検索や並び替えを行いたい。でもgroupメソッドも使用したい。そんな時はどうすれば良いでしょうか? left_joinメソッドを使用してください!