Use a transaction when registering a vote
Otherwise it would be possible to increment the votes counter without actually introducing the vote.
This commit is contained in:
@@ -107,8 +107,13 @@ class Debate < ApplicationRecord
|
||||
|
||||
def register_vote(user, vote_value)
|
||||
if votable_by?(user)
|
||||
Debate.increment_counter(:cached_anonymous_votes_total, id) if user.unverified? && !user.voted_for?(self)
|
||||
vote_by(voter: user, vote: vote_value)
|
||||
transaction do
|
||||
if user.unverified? && !user.voted_for?(self)
|
||||
Debate.increment_counter(:cached_anonymous_votes_total, id)
|
||||
end
|
||||
|
||||
vote_by(voter: user, vote: vote_value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user