Commit fdc546eb1792df6371c2bb8f16f8ec1221b8c8cd
1 parent
60ada0c5
Exists in
master
and in
1 other branch
Choice scores no longer calculated every index or show request
Showing
4 changed files
with
20 additions
and
24 deletions
Show diff stats
app/controllers/choices_controller.rb
| ... | ... | @@ -9,7 +9,9 @@ class ChoicesController < InheritedResources::Base |
| 9 | 9 | if params[:limit] |
| 10 | 10 | @question = Question.find(params[:question_id])#, :include => :choices) |
| 11 | 11 | @question.reload |
| 12 | - @question.choices.each(&:compute_score!) | |
| 12 | + | |
| 13 | + #should compute score after each win/loss | |
| 14 | + #@question.choices.each(&:compute_score!) | |
| 13 | 15 | unless params[:include_inactive] |
| 14 | 16 | @choices = Choice.find(:all, :conditions => {:question_id => @question.id, :active => true}, :limit => params[:limit].to_i, :order => 'score DESC', :include => :item) |
| 15 | 17 | else |
| ... | ... | @@ -17,7 +19,7 @@ class ChoicesController < InheritedResources::Base |
| 17 | 19 | end |
| 18 | 20 | else |
| 19 | 21 | @question = Question.find(params[:question_id], :include => :choices) #eagerloads ALL choices |
| 20 | - @question.choices.each(&:compute_score!) | |
| 22 | + #@question.choices.each(&:compute_score!) | |
| 21 | 23 | unless params[:include_inactive] |
| 22 | 24 | @choices = @question.choices(true).active.find(:all, :include => :item) |
| 23 | 25 | else |
| ... | ... | @@ -34,8 +36,8 @@ class ChoicesController < InheritedResources::Base |
| 34 | 36 | show! do |format| |
| 35 | 37 | format.xml { |
| 36 | 38 | @choice.reload |
| 37 | - @choice.compute_score! | |
| 38 | - @choice.reload | |
| 39 | + # @choice.compute_score! | |
| 40 | + # @choice.reload | |
| 39 | 41 | render :xml => @choice.to_xml(:methods => [:item_data, :wins_plus_losses, :question_name])} |
| 40 | 42 | format.json { render :json => @choice.to_json(:methods => [:data])} |
| 41 | 43 | end | ... | ... |
app/models/choice.rb
| ... | ... | @@ -26,6 +26,7 @@ class Choice < ActiveRecord::Base |
| 26 | 26 | |
| 27 | 27 | def lose! |
| 28 | 28 | self.loss_count += 1 rescue (self.loss_count = 1) |
| 29 | + self.score = compute_score | |
| 29 | 30 | save! |
| 30 | 31 | end |
| 31 | 32 | |
| ... | ... | @@ -51,7 +52,7 @@ class Choice < ActiveRecord::Base |
| 51 | 52 | self.item = @item |
| 52 | 53 | end |
| 53 | 54 | unless self.score |
| 54 | - self.score = 0.0 | |
| 55 | + self.score = 50.0 | |
| 55 | 56 | end |
| 56 | 57 | unless self.active? |
| 57 | 58 | puts "this choice was not specifically set to active, so we are now asking if we should auto-activate" | ... | ... |
app/models/visitor.rb
| ... | ... | @@ -16,31 +16,16 @@ class Visitor < ActiveRecord::Base |
| 16 | 16 | end |
| 17 | 17 | |
| 18 | 18 | def vote_for!(prompt, ordinality) |
| 19 | - # Why are there three vote objects created for every actual 'vote'? Why not have each vote have a questionid, promptid and choiceid? | |
| 20 | -# question_vote = votes.create!(:voteable_id => prompt.question_id, :voteable_type => "Question") | |
| 21 | -# logger.info "Visitor: #{self.inspect} voted for Question: #{prompt.question_id}" | |
| 22 | - | |
| 23 | - | |
| 24 | -# prompt_vote = votes.create!(:voteable => prompt) | |
| 25 | -# logger.info "Visitor: voted for Prompt: #{prompt.id.to_s}" | |
| 26 | - # @click = Click.new(:what_was_clicked => "on the API level, inside visitor#vote_for! with prompt id #{prompt.id}, ordinality #{ordinality.to_s}, choice: #{choice.item.data} (id: #{choice.id})") | |
| 27 | - # @click.save! | |
| 28 | - | |
| 29 | 19 | choices = prompt.choices |
| 30 | 20 | choice = choices[ordinality] #we need to guarantee that the choices are in the right order (by position) |
| 31 | 21 | other_choices = choices - [choice] |
| 32 | - other_choices.each {|c| c.lose! } | |
| 22 | + other_choices.each do |c| | |
| 23 | + c.lose! | |
| 24 | + end | |
| 33 | 25 | |
| 34 | 26 | loser_choice = other_choices.first |
| 35 | 27 | votes.create!(:question_id => prompt.question_id, :prompt_id => prompt.id, :voter_id=> self.id, :choice_id => choice.id, :loser_choice_id => loser_choice.id) |
| 36 | - | |
| 37 | -# choice_vote = votes.create!(:voteable => choice) | |
| 38 | - # logger.info "Visitor: voted for Prompt: #{prompt.id.to_s} for choice #{choice.item.data}" | |
| 39 | - # choice.save! | |
| 40 | - # choice.score = choice.compute_score | |
| 41 | - # logger.info "Just computed the score for that choice and it's apparently #{choice.score}" | |
| 42 | - # choice.save! | |
| 43 | - #logger.info "Saved. That choice's score is still #{choice.score}" | |
| 28 | + choice.compute_score! #update score after win | |
| 44 | 29 | end |
| 45 | 30 | |
| 46 | 31 | def skip!(prompt) | ... | ... |
db/migrate/20100323180141_set_blank_score_values_to_default_fifty.rb
0 → 100644