概要
ActiveRecordを用いて内部結合、外部結合をするためのjoins, left_joins, eager_load, includes, preload...などなど、さまざまな種類がありますね。
これらの細かい違いについては、ここでは解説を省略させていただきます。
下記に掲載したQiita記事は、僕も実際に参考にさせていただき、非常にわかりやすいと感じたので共有させていただきます。
では、本題に入りたいと思います。
今回やりたいこと
RailsのActiveRecordでポリモーフィックにしているモデルと別のモデルとを結合させて、両モデルからデータを取得したい
結論
ポリモーフィックなモデル(polymorphic: trueにしている)と別のモデルとを結合させたい時は、どうやらpreloadメソッド一択らしいです。
下記のページには
This error is raised when trying to eager load a polymorphic association using a JOIN. Eager loading olymorphic associations is only possible with ActiveRecord::Relation#preload.
といった記述があります。
簡単に翻訳すると、「ポリモーフィックなモデルのアソシエーションを読み込みは、preloadでのみ可能です」といった感じです。
まとめ
今回はActive Recordのポリモーフィックのモデルの結合について書きました。
ポリモーフィックやらモデル結合らへんの話は、結構よくでてくると思うのでぜひ参考にしてください。