diff --git a/app/controllers/choices_controller.rb b/app/controllers/choices_controller.rb index ebcaf8c..03b7ddb 100644 --- a/app/controllers/choices_controller.rb +++ b/app/controllers/choices_controller.rb @@ -74,8 +74,6 @@ class ChoicesController < InheritedResources::Base 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) - visitor_votes = Proc.new { |options| options[:builder].tag!('visitor_votes', visitor.votes.count(:conditions => {:question_id => @question.id})) } visitor_ideas = Proc.new { |options| options[:builder].tag!('visitor_ideas', visitor.items.count) } @@ -204,6 +202,13 @@ class ChoicesController < InheritedResources::Base end end + + def update + # prevent AttributeNotFound error and only update actual Choice columns, since we add extra information in 'show' method + choice_attributes = Choice.new.attribute_names + params[:choice] = params[:choice].delete_if {|key, value| !choice_attributes.include?(key)} + update! + end diff --git a/app/models/choice.rb b/app/models/choice.rb index 08665c9..4309a75 100644 --- a/app/models/choice.rb +++ b/app/models/choice.rb @@ -14,7 +14,12 @@ class Choice < ActiveRecord::Base 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} - + + after_save :update_questions_counter + + def update_questions_counter + self.question.update_attribute(:inactive_choices_count, self.question.choices.inactive.length) + end #attr_accessor :data def question_name @@ -105,7 +110,6 @@ class Choice < ActiveRecord::Base def activate! (self.active = true) self.save! - Question.update_counters(self.question_id, :inactive_choices_count => -1) end def suspend! @@ -116,7 +120,6 @@ class Choice < ActiveRecord::Base def deactivate! (self.active = false) self.save! - Question.update_counters(self.question_id, :inactive_choices_count => 1) end protected diff --git a/config/initializers/noisy_attr_accessible.rb b/config/initializers/noisy_attr_accessible.rb deleted file mode 100644 index 8d18997..0000000 --- a/config/initializers/noisy_attr_accessible.rb +++ /dev/null @@ -1,5 +0,0 @@ -ActiveRecord::Base.class_eval do - def log_protected_attribute_removal(*attributes) - raise "Can't mass-assign these protected attributes: #{attributes.join(', ')}" - end -end -- libgit2 0.21.2