class PunditNamespaces::NamespacedPolicyFinder

Attributes

namespace[R]

Public Class Methods

new(object, namespace = nil) click to toggle source
Calls superclass method
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 7
def initialize(object, namespace = nil)
  super(object)
  @namespace = namespace
end

Private Instance Methods

base_policy() click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 13
def base_policy
  return nil if object.nil?
  klass = name_from_method(object)
  return klass if klass
  klass = name_from_model_name(object) ||
          name_from_class(object) ||
          name_from_symbol(object) ||
          name_from_array(object) ||
          name_from_object(object)
  "#{klass}#{Pundit::SUFFIX}"
end
find(_object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 64
def find(_object)
  [namespace, base_policy].compact.flatten.join('::')
end
name_from_array(object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 55
def name_from_array(object)
  return nil unless object.is_a?(Array)
  object.join('/').camelize
end
name_from_class(object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 45
def name_from_class(object)
  return nil unless object.is_a?(Class)
  object.name
end
name_from_method(object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 25
def name_from_method(object)
  if object.respond_to?(:policy_class)
    object.policy_class
  elsif object.class.respond_to?(:policy_class)
    object.class.policy_class
  else
    nil
  end
end
name_from_model_name(object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 35
def name_from_model_name(object)
  if object.respond_to?(:model_name)
    object.model_name
  elsif object.class.respond_to?(:model_name)
    object.class.model_name
  else
    nil
  end
end
name_from_object(object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 60
def name_from_object(object)
  name_from_class(object.class)
end
name_from_symbol(object) click to toggle source
# File lib/pundit_namespaces/namespaced_policy_finder.rb, line 50
def name_from_symbol(object)
  return nil unless object.is_a?(Symbol)
  object.to_s.camelize
end