Commit 6e9fe757b0438f4b75a4bb80ce6e9eddfd0971f6
1 parent
8139c736
Exists in
master
and in
1 other branch
Refactoring update to work instead of update_from_abroad
Showing
3 changed files
with
13 additions
and
10 deletions
Show diff stats
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 | ... | ... |