Class: Pundit::PolicyFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/pundit/policy_finder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object) ⇒ PolicyFinder

Returns a new instance of PolicyFinder.



5
6
7
# File 'lib/pundit/policy_finder.rb', line 5

def initialize(object)
  @object = object
end

Instance Attribute Details

#objectObject (readonly)

Returns the value of attribute object.



3
4
5
# File 'lib/pundit/policy_finder.rb', line 3

def object
  @object
end

Instance Method Details

#nameObject



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/pundit/policy_finder.rb', line 9

def name
  if object.respond_to?(:model_name)
    object.model_name.to_s
  elsif object.class.respond_to?(:model_name)
    object.class.model_name.to_s
  elsif object.is_a?(Class)
    object.to_s
  else
    object.class.to_s
  end
end

#policyObject



27
28
29
30
31
# File 'lib/pundit/policy_finder.rb', line 27

def policy
  policy_name.constantize
rescue NameError
  nil
end

#policy!Object



37
38
39
# File 'lib/pundit/policy_finder.rb', line 37

def policy!
  policy or raise NotDefinedError, "unable to find policy #{policy_name} for #{object}"
end

#policy_nameObject



45
46
47
# File 'lib/pundit/policy_finder.rb', line 45

def policy_name
  "#{name}Policy"
end

#scopeObject



21
22
23
24
25
# File 'lib/pundit/policy_finder.rb', line 21

def scope
  scope_name.constantize
rescue NameError
  nil
end

#scope!Object



33
34
35
# File 'lib/pundit/policy_finder.rb', line 33

def scope!
  scope or raise NotDefinedError, "unable to find scope #{scope_name} for #{object}"
end

#scope_nameObject



41
42
43
# File 'lib/pundit/policy_finder.rb', line 41

def scope_name
  "#{name}Policy::Scope"
end