From 4c4c60d80c67a1aab90ecda5b24824e54c1e44cf Mon Sep 17 00:00:00 2001 From: Pius Uzamere Date: Fri, 11 Dec 2009 00:30:41 -0500 Subject: [PATCH] moar eager loading --- app/controllers/choices_controller.rb | 5 ----- app/controllers/prompts_controller.rb | 15 +++++++-------- app/models/question.rb | 2 +- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/app/controllers/choices_controller.rb b/app/controllers/choices_controller.rb index 75ae7a0..7229bcb 100644 --- a/app/controllers/choices_controller.rb +++ b/app/controllers/choices_controller.rb @@ -9,14 +9,9 @@ class ChoicesController < InheritedResources::Base @question = Question.find(params[:question_id])#, :include => :choices) @question.reload @choices = Choice.find(:all, :conditions => {:question_id => @question.id, :active => true}, :limit => params[:limit].to_i, :order => 'score DESC', :include => :item) - - #@choices.each {|c| c.compute_score!} else @question = Question.find(params[:question_id], :include => :choices) #eagerloads ALL choices @choices = @question.choices(true).active.find(:all, :include => :item) - - - #@choices.each {|c| c.compute_score!} end index! do |format| format.xml { render :xml => params[:data].blank? ? @choices.to_xml(:methods => [:item_data, :votes_count]) : @choices.to_xml(:include => [:items], :methods => [:data, :votes_count])} diff --git a/app/controllers/prompts_controller.rb b/app/controllers/prompts_controller.rb index 47e3439..9f3904f 100644 --- a/app/controllers/prompts_controller.rb +++ b/app/controllers/prompts_controller.rb @@ -50,7 +50,7 @@ class PromptsController < InheritedResources::Base logger.info "#{current_user.inspect} is voting #{direction}." @question = Question.find(params[:question_id]) - @prompt = @question.prompts.find(params[:id]) + @prompt = @question.prompts.find(params[:id], :include => :choices) case direction when :left successful = c = current_user.record_vote(params['params']['auto'], @prompt, 0) @@ -81,11 +81,11 @@ class PromptsController < InheritedResources::Base @prompt = @question.prompts.find(params[:id]) respond_to do |format| if @prompt.suspend! - format.xml { render :xml => @choice.to_xml, :status => :created } - format.json { render :json => @choice.to_json, :status => :created } + format.xml { render :xml => @prompt.to_xml, :status => :created } + format.json { render :json => @prompt.to_json, :status => :created } else - format.xml { render :xml => @choice.errors, :status => :unprocessable_entity } - format.json { render :json => @choice.to_json } + format.xml { render :xml => @prompt.errors, :status => :unprocessable_entity } + format.json { render :json => @prompt.to_json } end end end @@ -96,7 +96,7 @@ class PromptsController < InheritedResources::Base authenticate logger.info "#{current_user.inspect} is skipping." @question = Question.find(params[:question_id]) - @prompt = @question.prompts.find(params[:id]) + @prompt = @question.prompts.find(params[:id], :include => [{ :left_choice => :item }, { :right_choice => :item }]) respond_to do |format| @@ -152,8 +152,7 @@ class PromptsController < InheritedResources::Base def show @question = Question.find(params[:question_id]) - @prompt = @question.prompts.find(params[:id]) - show! do |format| + @prompt = @question.prompts.find(params[:id], :include => [{ :left_choice => :item }, { :right_choice => :item }]) format.xml { render :xml => @prompt.to_xml(:methods => [:left_choice_text, :right_choice_text])} format.json { render :json => @prompt.to_json(:methods => [:left_choice_text, :right_choice_text])} end diff --git a/app/models/question.rb b/app/models/question.rb index 3ad8f8b..aafee5d 100644 --- a/app/models/question.rb +++ b/app/models/question.rb @@ -23,7 +23,7 @@ class Question < ActiveRecord::Base def picked_prompt begin - @p = prompts.first(:order => 'RANDOM()') + @p = prompts.first(:order => 'RANDOM()', :include => [{ :left_choice => :item }, { :right_choice => :item }]) end until @p.active? return @p end -- libgit2 0.21.2