Commit 3efd083fa1723726adb2aa5304fec60ec70f9126
1 parent
be2c59fc
Exists in
master
and in
1 other branch
cast question votes so that we can cache the total vote count
Showing
4 changed files
with
18 additions
and
7 deletions
Show diff stats
app/controllers/questions_controller.rb
... | ... | @@ -7,8 +7,7 @@ class QuestionsController < InheritedResources::Base |
7 | 7 | show! do |format| |
8 | 8 | session['prompts_ids'] ||= [] |
9 | 9 | format.xml { |
10 | - #render :xml => @question.to_xml(:methods => [:item_count, :left_choice_text, :right_choice_text, :picked_prompt_id, :votes_count, :creator_id]) | |
11 | - render :xml => @question.to_xml(:methods => [:item_count, :left_choice_text, :right_choice_text, :picked_prompt_id, :votes_count]) | |
10 | + render :xml => @question.to_xml(:methods => [:item_count, :left_choice_text, :right_choice_text, :picked_prompt_id]) | |
12 | 11 | } |
13 | 12 | end |
14 | 13 | end | ... | ... |
app/models/question.rb
... | ... | @@ -48,11 +48,6 @@ class Question < ActiveRecord::Base |
48 | 48 | u.questions_voted_on.include? self |
49 | 49 | end |
50 | 50 | |
51 | - def votes_count | |
52 | - Vote.count(:all, :conditions => {:voteable_id => id, :voteable_type => 'Question'}) | |
53 | - end | |
54 | - | |
55 | - | |
56 | 51 | |
57 | 52 | validates_presence_of :site, :on => :create, :message => "can't be blank" |
58 | 53 | validates_presence_of :creator, :on => :create, :message => "can't be blank" | ... | ... |
app/models/visitor.rb
... | ... | @@ -5,6 +5,7 @@ class Visitor < ActiveRecord::Base |
5 | 5 | has_many :skips, :class_name => "Skip", :foreign_key => "skipper_id" |
6 | 6 | has_many :items, :class_name => "Item", :foreign_key => "creator_id" |
7 | 7 | has_many :clicks |
8 | + | |
8 | 9 | validates_presence_of :site, :on => :create, :message => "can't be blank" |
9 | 10 | validates_uniqueness_of :identifier, :on => :create, :message => "must be unique", :scope => :site_id |
10 | 11 | |
... | ... | @@ -13,10 +14,15 @@ class Visitor < ActiveRecord::Base |
13 | 14 | end |
14 | 15 | |
15 | 16 | def vote_for!(prompt, ordinality) |
17 | + question_vote = votes.create!(:voteable => prompt.question) | |
18 | + logger.info "Visitor: #{self.inspect} voted for Question: #{prompt.question.inspect}" | |
19 | + | |
20 | + | |
16 | 21 | choices = prompt.choices |
17 | 22 | choice = choices[ordinality] #we need to guarantee that the choices are in the right order (by position) |
18 | 23 | prompt_vote = votes.create!(:voteable => prompt) |
19 | 24 | logger.info "Visitor: #{self.inspect} voted for Prompt: #{prompt.inspect}" |
25 | + | |
20 | 26 | choice_vote = votes.create!(:voteable => choice) |
21 | 27 | logger.info "Visitor: #{self.inspect} voted for Choice: #{choice.inspect}" |
22 | 28 | choice.save! | ... | ... |
db/migrate/20091204144003_update_vote_count_for_questions.rb
0 → 100644
... | ... | @@ -0,0 +1,11 @@ |
1 | +class UpdateVoteCountForQuestions < ActiveRecord::Migration | |
2 | + def self.up | |
3 | + Question.reset_column_information | |
4 | + Question.find(:all).each do |q| | |
5 | + Question.update_counters q.id, :votes_count => q.choices.collect(&:votes_count).sum | |
6 | + end | |
7 | + end | |
8 | + | |
9 | + def self.down | |
10 | + end | |
11 | +end | ... | ... |