Forum: Ruby A backwards N+1 problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Richard S. (Guest)
on 2008-10-27 19:48
Hey, i’m running into an N+1 problem, but i don't exactly know how to
:include in this situation. (controller code is at the bottom).

 I'm trying to find all of the highest ranked definitions, and then
render their associated phrases.

A Phrase has many definitions. A Definition has many children

I already have all the info i need stored in @definitions, so this
should only require one SQL call, but unfortunately this line:

 @Phrases << definition.phrase(:include => [:definitions => :children])

Doesn’t actually work.

Below is my controller code. Rails 2.1.0, Ruby 1.8.6…Thanks ahead of
time

   def index
      @definitions = Definition.find(:all, :include => [:children,
:phrase], :limit => 10, :order => 'rank DESC')
       @Phrases = []
       for definition in @definitions
         @Phrases << definition.phrase(:include => [:definitions =>
:children])
       end
       @Phrases = @Phrases.uniq
       if @Phrases != nil
         @new_phrases = @Phrases.paginate(:page => params[:page], :order
=> 'word ASC', :per_page => 5)
       end ## if @phrase !=nil
    end ##def index


The full capture can be found under my <a href
="https://tuneup.fiveruns.com/runs/699"> Five Runs Account </a>

If you have any suggestions i would love for my main page to not take
5000 milliseconds to load : )
Xavier S. (Guest)
on 2008-10-27 23:57
Richard S. wrote:
> Hey, i’m running into an N+1 problem, but i don't exactly know how to
> :include in this situation. (controller code is at the bottom).

Try asking on the Ruby on Rails list: http://www.ruby-forum.com/forum/3
This topic is locked and can not be replied to.