すでにActiveRecordとしてインスタンス化されたモデルについて、has_manyからもう1段 Eager Loadすることはできますでしょうか。
モデル定義例
ruby
1# app/models/article.rb 2class Article < ActiveRecord::Base 3 has_many :comments 4end 5 6# app/models/comment.rb 7class Comment < ActiveRecord::Base 8 belongs_to :article 9 belongs_to :emotion_type 10end 11 12# app/models/emotion_type.rb 13class EmotionType < ActiveRecord::Base 14end
記事にいくつかのコメントが付けられて、それぞれのコメントに感情が割り当てられている、そんな体系です。
ふつうのeager load
モデルから取得するときにeager loadをかけることは、普通に可能です。
ruby
1@article = Article.includes(comments: :emotion_type).find_by( 後略 )
質問内容
一方で、すでにActiveRecordオブジェクトとなっているレコードに対して、あとからemotion_type
のEager Loadは可能なのでしょうか。
ruby
1# ここの時点でeager loadする以外に、方策はあるのか 2some_article = Article.find(params[:id]) 3 4 5# こんなことをしたけど意味はなかった 6some_article.comments.eager_load(:emotion_type)
環境情報
- Rails 4.2.6
- MySQL 5.x
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。