diff options
author | Thibaut Girka <thib@sitedethib.com> | 2019-03-05 19:23:16 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2019-03-05 19:23:16 +0100 |
commit | f513317ba262d9f5d7aa7dd66f8b61690297e107 (patch) | |
tree | 6732fcf1178fc3e27404c6830bc2bc1c832659ae /app/models/poll_vote.rb | |
parent | 2a4ce7458a16c64029842fde210089453be2ede1 (diff) | |
parent | 7d5e2dda78414316f9cf09fcf6096d6a158da312 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - app/models/status.rb - db/schema.rb Both conflicts are caused by us having extra database columns.
Diffstat (limited to 'app/models/poll_vote.rb')
-rw-r--r-- | app/models/poll_vote.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/app/models/poll_vote.rb b/app/models/poll_vote.rb new file mode 100644 index 000000000..9ad66bbf8 --- /dev/null +++ b/app/models/poll_vote.rb @@ -0,0 +1,36 @@ +# 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 + end +end |