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