Use with_lock instead of lock!
That way the record is only locked while necessary.
This commit is contained in:
@@ -18,10 +18,10 @@ class Budget
|
||||
before_validation :set_denormalized_ids
|
||||
|
||||
def check_enough_resources
|
||||
ballot.lock!
|
||||
|
||||
unless ballot.enough_resources?(investment)
|
||||
errors.add(:resources, ballot.not_enough_resources_error)
|
||||
ballot.with_lock do
|
||||
unless ballot.enough_resources?(investment)
|
||||
errors.add(:resources, ballot.not_enough_resources_error)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -38,10 +38,10 @@ class Poll::Answer < ApplicationRecord
|
||||
def max_votes
|
||||
return if !question || !author || persisted?
|
||||
|
||||
author.lock!
|
||||
|
||||
if question.answers.by_author(author).count >= question.max_votes
|
||||
errors.add(:answer, "Maximum number of votes per user exceeded")
|
||||
author.with_lock do
|
||||
if question.answers.by_author(author).count >= question.max_votes
|
||||
errors.add(:answer, "Maximum number of votes per user exceeded")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user