module SkinnyControllers::Lookup::Policy
Public Instance Methods
class_from_model(name)
click to toggle source
@param [String] name the name of the model @return [Class] the policy class
# File lib/skinny_controllers/lookup/policy.rb, line 9 def class_from_model(name) policy_class_name = class_name_from_model(name) klass = policy_class_name.safe_constantize unless klass SkinnyControllers.logger.warn("#{policy_class_name} not found. Creating Default...") end klass || define_policy_class(policy_class_name) end
class_name_from_model(name)
click to toggle source
# File lib/skinny_controllers/lookup/policy.rb, line 20 def class_name_from_model(name) "#{name}#{SkinnyControllers.policy_suffix}" end
define_policy_class(name)
click to toggle source
# File lib/skinny_controllers/lookup/policy.rb, line 24 def define_policy_class(name) default_policy = SkinnyControllers::Policy::Default namespace_klass = Object # if we are namespaced, we need to get / create the namespace if it doesn't exist already if name.include?('::') namespaces = name.split('::') namespace = namespaces[0..-2].join('::').presence namespace = namespace == name ? 'Object' : namespace if namespace.presence && namespace != name namespace_klass = Namespace.create_namespace(namespace) end end # naw remove the namespace from the name name = name.gsub(namespace_klass.name + '::', '') # finally, define the new policy class namespace_klass.const_set(name, default_policy.dup) end
method_name_for_operation(class_name)
click to toggle source
@param [String] class_name name of the operation class
# File lib/skinny_controllers/lookup/policy.rb, line 45 def method_name_for_operation(class_name) class_name.demodulize.underscore + POLICY_METHOD_SUFFIX end