Commit 0490f6b78d0d29f5d51da9c96fd387d7c2a86496
1 parent
f408721c
Exists in
master
and in
1 other branch
lock question before updating choice
Showing
1 changed file
with
6 additions
and
3 deletions
Show diff stats
app/controllers/choices_controller.rb
@@ -88,9 +88,12 @@ class ChoicesController < InheritedResources::Base | @@ -88,9 +88,12 @@ class ChoicesController < InheritedResources::Base | ||
88 | # prevent AttributeNotFound error and only update actual Choice columns, since we add extra information in 'show' method | 88 | # prevent AttributeNotFound error and only update actual Choice columns, since we add extra information in 'show' method |
89 | choice_attributes = Choice.new.attribute_names | 89 | choice_attributes = Choice.new.attribute_names |
90 | params[:choice] = params[:choice].delete_if {|key, value| !choice_attributes.include?(key)} | 90 | params[:choice] = params[:choice].delete_if {|key, value| !choice_attributes.include?(key)} |
91 | - @question = current_user.questions.find(params[:question_id]) | ||
92 | - @choice = @question.choices.find(params[:id]) | ||
93 | - update! | 91 | + Choice.transaction do |
92 | + # lock question since we'll need a lock on it later in Choice.update_questions_counter | ||
93 | + @question = current_user.questions.find(params[:question_id], :lock => true) | ||
94 | + @choice = @question.choices.find(params[:id]) | ||
95 | + update! | ||
96 | + end | ||
94 | end | 97 | end |
95 | 98 | ||
96 | def show | 99 | def show |