Sha256: 209a7da80bb2cf1e92662f17ae2f9e3c83ad893944ae2fac26135303efa4e4b9

Contents?: true

Size: 907 Bytes

Versions: 7

Compression:

Stored size: 907 Bytes

Contents

# frozen_string_literal: true

module Decidim
  # This concern contains the logic related with resources that can be endorsed.
  # Thus, it is expected to be included into a resource that is wanted to be endorsable.
  # This resource will have many `Decidim::Endorsement`s.
  module Endorsable
    extend ActiveSupport::Concern

    included do
      has_many :endorsements,
               as: :resource,
               dependent: :destroy,
               counter_cache: "endorsements_count"

      # Public: Check if the user has endorsed the resource.
      # - user_group: may be nil if user is not representing any user_group.
      #
      # Returns Boolean.
      def endorsed_by?(user, user_group = nil)
        if user_group
          endorsements.where(user_group: user_group).any?
        else
          endorsements.where(author: user, user_group: 0).any?
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
decidim-core-0.27.9 lib/decidim/endorsable.rb
decidim-core-0.27.8 lib/decidim/endorsable.rb
decidim-core-0.27.7 lib/decidim/endorsable.rb
decidim-core-0.27.6 lib/decidim/endorsable.rb
decidim-core-0.26.10 lib/decidim/endorsable.rb
decidim-core-0.26.9 lib/decidim/endorsable.rb
decidim-core-0.27.5 lib/decidim/endorsable.rb