Commit 6e9fe757b0438f4b75a4bb80ce6e9eddfd0971f6

Authored by Dhruv Kapadia
1 parent 8139c736

Refactoring update to work instead of update_from_abroad

app/controllers/choices_controller.rb
... ... @@ -74,8 +74,6 @@ class ChoicesController < InheritedResources::Base
74 74 options[:builder].tag!('choice_status', the_status) }
75 75 logger.info "successfully saved the choice #{@choice.inspect}"
76 76  
77   - Question.update_counters(@question.id, :inactive_choices_count => @choice.active? ? 0 : 1)
78   -
79 77 visitor_votes = Proc.new { |options| options[:builder].tag!('visitor_votes', visitor.votes.count(:conditions => {:question_id => @question.id})) }
80 78 visitor_ideas = Proc.new { |options| options[:builder].tag!('visitor_ideas', visitor.items.count) }
81 79  
... ... @@ -204,6 +202,13 @@ class ChoicesController < InheritedResources::Base
204 202 end
205 203  
206 204 end
  205 +
  206 + def update
  207 + # prevent AttributeNotFound error and only update actual Choice columns, since we add extra information in 'show' method
  208 + choice_attributes = Choice.new.attribute_names
  209 + params[:choice] = params[:choice].delete_if {|key, value| !choice_attributes.include?(key)}
  210 + update!
  211 + end
207 212  
208 213  
209 214  
... ...
app/models/choice.rb
... ... @@ -14,7 +14,12 @@ class Choice < ActiveRecord::Base
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 16 named_scope :inactive, :conditions => { :active => false}
17   -
  17 +
  18 + after_save :update_questions_counter
  19 +
  20 + def update_questions_counter
  21 + self.question.update_attribute(:inactive_choices_count, self.question.choices.inactive.length)
  22 + end
18 23 #attr_accessor :data
19 24  
20 25 def question_name
... ... @@ -105,7 +110,6 @@ class Choice < ActiveRecord::Base
105 110 def activate!
106 111 (self.active = true)
107 112 self.save!
108   - Question.update_counters(self.question_id, :inactive_choices_count => -1)
109 113 end
110 114  
111 115 def suspend!
... ... @@ -116,7 +120,6 @@ class Choice < ActiveRecord::Base
116 120 def deactivate!
117 121 (self.active = false)
118 122 self.save!
119   - Question.update_counters(self.question_id, :inactive_choices_count => 1)
120 123 end
121 124  
122 125 protected
... ...
config/initializers/noisy_attr_accessible.rb
... ... @@ -1,5 +0,0 @@
1   -ActiveRecord::Base.class_eval do
2   - def log_protected_attribute_removal(*attributes)
3   - raise "Can't mass-assign these protected attributes: #{attributes.join(', ')}"
4   - end
5   -end