LoginSignup
2
1

More than 3 years have passed since last update.

polymorphic: trueとなっているポリモーフィックなモデルを結合する方法

Posted at

概要

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のポリモーフィックのモデルの結合について書きました。

ポリモーフィックやらモデル結合らへんの話は、結構よくでてくると思うのでぜひ参考にしてください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1