blob: ad24eb6914a0e0ad2e54b3b3f7539ae79430bb01 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# frozen_string_literal: true
# == Schema Information
#
# Table name: poll_votes
#
# id :bigint(8) not null, primary key
# account_id :bigint(8)
# poll_id :bigint(8)
# choice :integer default(0), not null
# created_at :datetime not null
# updated_at :datetime not null
# uri :string
#
class PollVote < ApplicationRecord
belongs_to :account
belongs_to :poll, inverse_of: :votes
validates :choice, presence: true
validates_with VoteValidator
after_create_commit :increment_counter_cache
delegate :local?, to: :account
def object_type
:vote
end
private
def increment_counter_cache
poll.cached_tallies[choice] = (poll.cached_tallies[choice] || 0) + 1
poll.save
rescue ActiveRecord::StaleObjectError
poll.reload
retry
end
end
|