On 28 Oct 2008, at 00:33, Richard Schneeman 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).
>
> 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])
>

An easy way - Phrase.find :all, :include => [...], :conditions =>  
["definitions.phrase_id in (?)", @definitions]

or something like
@definitions = Definition.find :all, :include => [:phrase =>  
{:definitions => :children}], :order => 'rank desc', :limit => 10
@phrases = @definitions.collect {|definition| definition.phrase}

might do the trick.

Fred

> 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 Five Runs Account
> https://tuneup.fiveruns.com/runs/699
>
> If you have any suggestions i would love for my main page to not take
> 5000 milliseconds to load : )
> -- 
> Posted via http://www.ruby-forum.com/.
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to