You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
676 B

# 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
#
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
private
def increment_counter_cache
poll.cached_tallies[choice] = (poll.cached_tallies[choice] || 0) + 1
poll.save
end
end