Class: Pundit::Matchers::Utils::PolicyInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/pundit/matchers/utils/policy_info.rb

Overview

Collects all details about given policy class.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(policy) ⇒ PolicyInfo

Returns a new instance of PolicyInfo.



10
11
12
# File 'lib/pundit/matchers/utils/policy_info.rb', line 10

def initialize(policy)
  @policy = policy
end

Instance Attribute Details

#policyObject (readonly)

Returns the value of attribute policy.



8
9
10
# File 'lib/pundit/matchers/utils/policy_info.rb', line 8

def policy
  @policy
end

Instance Method Details

#actionsObject



14
15
16
17
18
19
# File 'lib/pundit/matchers/utils/policy_info.rb', line 14

def actions
  @actions ||= begin
    policy_methods = @policy.public_methods - Object.instance_methods
    policy_methods.grep(/\?$/).map { |policy_method| policy_method.to_s.sub(/\?$/, '').to_sym }
  end
end

#forbidden_actionsObject



25
26
27
# File 'lib/pundit/matchers/utils/policy_info.rb', line 25

def forbidden_actions
  actions - permitted_actions
end

#permitted_actionsObject



21
22
23
# File 'lib/pundit/matchers/utils/policy_info.rb', line 21

def permitted_actions
  @permitted_actions ||= actions.select { |action| policy.public_send("#{action}?") }
end