class Porteiro::PolicyFinder

Constants

PolicyNotFound

Attributes

context[R]
default_policy[R]
user[R]

Public Class Methods

call(context, user, default_policy=nil) click to toggle source
# File lib/porteiro/policy_finder.rb, line 8
def self.call(context, user, default_policy=nil)
  service = new(context, user, default_policy)
  service.call
end
new(context, user, default_policy=nil) click to toggle source
# File lib/porteiro/policy_finder.rb, line 14
def initialize(context, user, default_policy=nil)
  @context        = context
  @user           = user
  @default_policy = default_policy
end

Public Instance Methods

call() click to toggle source
# File lib/porteiro/policy_finder.rb, line 20
def call
  policy.new(user, context)
end
controller_name() click to toggle source
# File lib/porteiro/policy_finder.rb, line 37
def controller_name
  context.params[:controller].camelize
end
policy() click to toggle source
# File lib/porteiro/policy_finder.rb, line 24
def policy
  policy = safe_constantize(policy_class_name)
  if !policy && default_policy
    policy = safe_constantize(default_policy)
  end
  raise PolicyNotFound, "#{policy_class_name} could not be found" unless policy 
  policy 
end
policy_class_name() click to toggle source
# File lib/porteiro/policy_finder.rb, line 33
def policy_class_name
  [controller_name, 'Policy'].join
end

Private Instance Methods

safe_constantize(name) click to toggle source
# File lib/porteiro/policy_finder.rb, line 44
def safe_constantize(name)
  ::Object.const_get(name.to_s)
rescue ::NameError
  nil
end