Sha256: 674ff4ed3584b152958fadf1970f79b59a6f9d580ab3b806bbeb556a515332ad

Contents?: true

Size: 909 Bytes

Versions: 14

Compression:

Stored size: 909 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: nil).any?
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
decidim-core-0.26.8 lib/decidim/endorsable.rb
decidim-core-0.27.4 lib/decidim/endorsable.rb
decidim-core-0.27.3 lib/decidim/endorsable.rb
decidim-core-0.26.7 lib/decidim/endorsable.rb
decidim-core-0.26.5 lib/decidim/endorsable.rb
decidim-core-0.27.2 lib/decidim/endorsable.rb
decidim-core-0.27.1 lib/decidim/endorsable.rb
decidim-core-0.26.4 lib/decidim/endorsable.rb
decidim-core-0.27.0 lib/decidim/endorsable.rb
decidim-core-0.26.3 lib/decidim/endorsable.rb
decidim-core-0.27.0.rc2 lib/decidim/endorsable.rb
decidim-core-0.27.0.rc1 lib/decidim/endorsable.rb
decidim-core-0.26.2 lib/decidim/endorsable.rb
decidim-core-0.26.1 lib/decidim/endorsable.rb