docbrown/app/models/poll.rb
rhymes 10efa25c0a
Add missing presence validators to models (#10495)
* Add missing presence validator for Tag

* Add missing presence validators to Follow

* Add missing presence validators to ProfileField

* Add missing presence validators to Comment

* Add missing presence validators to Profile

* Add missing presence validators to Organization

* Add missing presence validators to Badge

* Add missing presence validators to Webhook::Endpoint

* Add missing presence validators to NotificationSubscription

* Add missing presence validators to PodcastEpisode

* Add missing presence validators to Sponsorship

* Add missing presence validators to PollOption

* Add missing presence validators to Poll

* Add missing presence validators to Article

* Add missing presence validators to EmailAuthorization

* Add missing presence validators to AuditLog

* Add missing presence validators to DataUpdateScript

* Add missing presence validators to User

* Add missing presence validators to SiteConfig

* Fix specs
2020-10-01 16:15:32 +02:00

36 lines
1 KiB
Ruby

class Poll < ApplicationRecord
attr_accessor :poll_options_input_array
serialize :voting_data
belongs_to :article
has_many :poll_options, dependent: :destroy
has_many :poll_skips, dependent: :destroy
has_many :poll_votes, dependent: :destroy
validates :poll_options_count, presence: true
validates :poll_options_input_array, presence: true, length: { minimum: 2, maximum: 15 }
validates :poll_skips_count, presence: true
validates :poll_votes_count, presence: true
validates :prompt_markdown, presence: true, length: { maximum: 128 }
before_save :evaluate_markdown
after_create :create_poll_options
def voting_data
{ votes_count: poll_votes_count, votes_distribution: poll_options.pluck(:id, :poll_votes_count) }
end
private
def create_poll_options
poll_options_input_array.each do |input|
PollOption.create!(markdown: input, poll_id: id)
end
end
def evaluate_markdown
self.prompt_html = MarkdownParser.new(prompt_markdown).evaluate_inline_limited_markdown
end
end