Sha256: 335b1f1ed6d5a39bc639e36df6f75ddded95efd14964412442ee890f768aa12d

Contents?: true

Size: 961 Bytes

Versions: 44

Compression:

Stored size: 961 Bytes

Contents

# frozen_string_literal: true

module Decidim
  module Proposals
    # A proposal can include a vote per user.
    class ProposalVote < ApplicationRecord
      belongs_to :proposal, foreign_key: "decidim_proposal_id", class_name: "Decidim::Proposals::Proposal", counter_cache: true
      belongs_to :author, foreign_key: "decidim_author_id", class_name: "Decidim::User"

      validates :proposal, uniqueness: { scope: :author }
      validate :author_and_proposal_same_organization
      validate :proposal_not_rejected

      private

      # Private: check if the proposal and the author have the same organization
      def author_and_proposal_same_organization
        return if !proposal || !author
        errors.add(:proposal, :invalid) unless author.organization == proposal.organization
      end

      def proposal_not_rejected
        return unless proposal
        errors.add(:proposal, :invalid) if proposal.rejected?
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 2 rubygems

Version Path
decidim-proposals-0.14.4 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.14.3 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.14.2 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.14.1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.13.1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.12.2 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.13.0 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.12.1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.13.0.pre1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.12.0 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.11.2 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.12.0.pre app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.11.1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.11.0.pre1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.10.1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.10.0 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.9.3 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.9.2 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.9.1 app/models/decidim/proposals/proposal_vote.rb
decidim-proposals-0.9.0 app/models/decidim/proposals/proposal_vote.rb