Sha256: 897d7a7b31acb471dba5c55751dcc0851fcd40dcf63e73141a6d7e46f937f8b9
Contents?: true
Size: 1.5 KB
Versions: 7
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true module Decidim module Proposals class ProposalState < Proposals::ApplicationRecord include Decidim::HasComponent include Decidim::Traceable include Decidim::Loggable include Decidim::TranslatableResource include Decidim::TranslatableAttributes before_validation :generate_token, on: :create translatable_fields :title validates :token, presence: true, uniqueness: { scope: :component } has_many :proposals, class_name: "Decidim::Proposals::Proposal", foreign_key: "decidim_proposals_proposal_state_id", inverse_of: :proposal_state, dependent: :restrict_with_error, counter_cache: :proposals_count def self.log_presenter_class_for(_log) Decidim::Proposals::AdminLog::ProposalStatePresenter end def css_style "background-color: #{bg_color}; color: #{text_color}; border-color: #{text_color};" end def self.colors Decidim::Proposals.proposal_states_colors end protected def generate_token self.token = ensure_unique_token(translated_attribute(title).parameterize(separator: "_")) end def ensure_unique_token(token) step = 0 code = token loop do break if Decidim::Proposals::ProposalState.where(component:, token: code).empty? code = "#{token}_#{step}" step += 1 end code end end end end
Version data entries
7 entries across 7 versions & 1 rubygems