Commit f9071a75f8740b1de2726f14480c1f3c03bbca55
1 parent
eb7cee48
Exists in
master
and in
1 other branch
Inactive choice count for each question
Showing
3 changed files
with
20 additions
and
0 deletions
Show diff stats
app/controllers/choices_controller.rb
| ... | ... | @@ -68,6 +68,9 @@ class ChoicesController < InheritedResources::Base |
| 68 | 68 | the_status = @choice.active? ? 'active' : 'inactive' |
| 69 | 69 | options[:builder].tag!('choice_status', the_status) } |
| 70 | 70 | logger.info "successfully saved the choice #{@choice.inspect}" |
| 71 | + | |
| 72 | + Question.update_counters(@question.id, :inactive_choices_count => @choice.active? ? 0 : 1) | |
| 73 | + | |
| 71 | 74 | format.xml { render :xml => @choice.to_xml(:procs => [saved_choice_id, choice_status]), :status => :ok } |
| 72 | 75 | # format.xml { render :xml => @question.picked_prompt.to_xml(:methods => [:left_choice_text, :right_choice_text], :procs => [saved_choice_id, choice_status]), :status => :ok } |
| 73 | 76 | format.json { render :json => @question.to_json(:procs => [saved_choice_id, choice_status]), :status => :ok } |
| ... | ... | @@ -87,6 +90,7 @@ class ChoicesController < InheritedResources::Base |
| 87 | 90 | respond_to do |format| |
| 88 | 91 | if @choice.activate! |
| 89 | 92 | logger.info "successfully activated choice #{@choice.inspect}" |
| 93 | + Question.update_counters(@question.id, :inactive_choices_count => -1) | |
| 90 | 94 | format.xml { render :xml => true } |
| 91 | 95 | format.json { render :json => true } |
| 92 | 96 | else |
| ... | ... | @@ -109,6 +113,7 @@ class ChoicesController < InheritedResources::Base |
| 109 | 113 | format.json { render :json => false } |
| 110 | 114 | elsif @choice.deactivate! |
| 111 | 115 | logger.info "successfully deactivated choice #{@choice.inspect}" |
| 116 | + Question.update_counters(@question.id, :inactive_choices_count => 1 ) | |
| 112 | 117 | format.xml { render :xml => true } |
| 113 | 118 | format.json { render :json => true } |
| 114 | 119 | else | ... | ... |
app/models/choice.rb
| ... | ... | @@ -13,6 +13,7 @@ class Choice < ActiveRecord::Base |
| 13 | 13 | has_many :prompts_on_the_left, :class_name => "Prompt", :foreign_key => "left_choice_id" |
| 14 | 14 | has_many :prompts_on_the_right, :class_name => "Prompt", :foreign_key => "right_choice_id" |
| 15 | 15 | named_scope :active, :conditions => { :active => true } |
| 16 | + named_scope :inactive, :conditions => { :active => false} | |
| 16 | 17 | |
| 17 | 18 | #attr_accessor :data |
| 18 | 19 | ... | ... |
db/migrate/20100325155833_add_inactive_choice_count_to_questions.rb
0 → 100644
| ... | ... | @@ -0,0 +1,14 @@ |
| 1 | +class AddInactiveChoiceCountToQuestions < ActiveRecord::Migration | |
| 2 | + def self.up | |
| 3 | + add_column :questions, :inactive_choices_count, :integer, :default => 0 | |
| 4 | + Question.reset_column_information | |
| 5 | + Question.find(:all).each do |q| | |
| 6 | + Question.update_counters(q.id, :inactive_choices_count => q.choices.inactive.size) | |
| 7 | + end | |
| 8 | + | |
| 9 | + end | |
| 10 | + | |
| 11 | + def self.down | |
| 12 | + remove_column :questions, :inactive_choices_count | |
| 13 | + end | |
| 14 | +end | ... | ... |