Use with_lock instead of lock!

That way the record is only locked while necessary.
This commit is contained in:
Javi Martín
2024-05-10 02:00:37 +02:00
parent a54d424aed
commit fb9156f9b8
2 changed files with 8 additions and 8 deletions

View File

@@ -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

View File

@@ -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