Rails 4.1.2 Eager Load Doesn't Kill N+1 Query

Qijun Feng
Sun, 21 Sep 2014 01:01:34 -0000

Rails: 4.1.2, Ruby: 2.1.1

I have an `Article` class, which is `commentable` and `has_many :comments`

    module Commentable
      extend ActiveSupport::Concern

      included do
        has_many :comments, :as => :commentable
      end
    end


    class Comment < ActiveRecord::Base

      belongs_to :commentable, :polymorphic => true, :touch => true
      belongs_to :user

      #other codes....
    end


when display the article, I'd like to load all releated information

    @item = Article.includes(:tags, {:comments => :user}).where(id: params[:
id]).first


and it does preload tags and comments object.

but when I render `comments`, the comments object and user objects get
loaded again.

    = render @item.comments


from log:

<http://i.stack.imgur.com/LH98X.png>


![development log][1]


  [1]: http://i.stack.imgur.com/LH98X.png

--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to rubyonrails-core+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.