diff --git a/app/controllers/choices_controller.rb b/app/controllers/choices_controller.rb index 3ca9003..558b3ce 100644 --- a/app/controllers/choices_controller.rb +++ b/app/controllers/choices_controller.rb @@ -68,6 +68,9 @@ class ChoicesController < InheritedResources::Base the_status = @choice.active? ? 'active' : 'inactive' options[:builder].tag!('choice_status', the_status) } logger.info "successfully saved the choice #{@choice.inspect}" + + Question.update_counters(@question.id, :inactive_choices_count => @choice.active? ? 0 : 1) + format.xml { render :xml => @choice.to_xml(:procs => [saved_choice_id, choice_status]), :status => :ok } # format.xml { render :xml => @question.picked_prompt.to_xml(:methods => [:left_choice_text, :right_choice_text], :procs => [saved_choice_id, choice_status]), :status => :ok } format.json { render :json => @question.to_json(:procs => [saved_choice_id, choice_status]), :status => :ok } @@ -87,6 +90,7 @@ class ChoicesController < InheritedResources::Base respond_to do |format| if @choice.activate! logger.info "successfully activated choice #{@choice.inspect}" + Question.update_counters(@question.id, :inactive_choices_count => -1) format.xml { render :xml => true } format.json { render :json => true } else @@ -109,6 +113,7 @@ class ChoicesController < InheritedResources::Base format.json { render :json => false } elsif @choice.deactivate! logger.info "successfully deactivated choice #{@choice.inspect}" + Question.update_counters(@question.id, :inactive_choices_count => 1 ) format.xml { render :xml => true } format.json { render :json => true } else diff --git a/app/models/choice.rb b/app/models/choice.rb index 1f645f6..ef39331 100644 --- a/app/models/choice.rb +++ b/app/models/choice.rb @@ -13,6 +13,7 @@ class Choice < ActiveRecord::Base has_many :prompts_on_the_left, :class_name => "Prompt", :foreign_key => "left_choice_id" has_many :prompts_on_the_right, :class_name => "Prompt", :foreign_key => "right_choice_id" named_scope :active, :conditions => { :active => true } + named_scope :inactive, :conditions => { :active => false} #attr_accessor :data diff --git a/db/migrate/20100325155833_add_inactive_choice_count_to_questions.rb b/db/migrate/20100325155833_add_inactive_choice_count_to_questions.rb new file mode 100644 index 0000000..d4fbf54 --- /dev/null +++ b/db/migrate/20100325155833_add_inactive_choice_count_to_questions.rb @@ -0,0 +1,14 @@ +class AddInactiveChoiceCountToQuestions < ActiveRecord::Migration + def self.up + add_column :questions, :inactive_choices_count, :integer, :default => 0 + Question.reset_column_information + Question.find(:all).each do |q| + Question.update_counters(q.id, :inactive_choices_count => q.choices.inactive.size) + end + + end + + def self.down + remove_column :questions, :inactive_choices_count + end +end -- libgit2 0.21.2