Sha256: 4ae41412d966e06e47092d8486d39d159a296d3a4bcfa7d2616bef0f87595101

Contents?: true

Size: 755 Bytes

Versions: 5

Compression:

Stored size: 755 Bytes

Contents

module Scram
  # Class representing a Holder of policies through other Holders
  # @note Implementing classes must implement #aggregates and #scram_compare_value
  module AggregateHolder
    include Holder

    # @return [Array] other holders to consider in Policy inclusion
    def aggregates
      raise NotImplementedError # should be implemented by subclass
    end

    # @return [Array] list of policies through aggregates
    def policies
      aggregate_policies = aggregates.map {|a| a.policies}.flatten.sort_by {|p| p.priority}.reverse
    end

    # @return [Object] a value to compare {AggregateHolder} in the database. For example, an ObjectID would be suitable.
    def scram_compare_value
      raise NotImplementedError
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
scram-0.1.4 lib/scram/concerns/aggregate_holder.rb
scram-0.1.3 lib/scram/concerns/aggregate_holder.rb
scram-0.1.2 lib/scram/concerns/aggregate_holder.rb
scram-0.1.1 lib/scram/concerns/aggregate_holder.rb
scram-0.1.0 lib/scram/concerns/aggregate_holder.rb