Module: SkinnyControllers::Lookup::Policy
- Defined in:
- lib/skinny_controllers/lookup/policy.rb
Class Method Summary collapse
-
.class_from_model(name) ⇒ Class
The policy class.
- .class_name_from_model(name) ⇒ Object
- .define_policy_class(name) ⇒ Object
- .method_name_for_operation(class_name) ⇒ Object
- .namespace ⇒ Object
Class Method Details
.class_from_model(name) ⇒ Class
Returns the policy class.
8 9 10 11 12 |
# File 'lib/skinny_controllers/lookup/policy.rb', line 8 def class_from_model(name) policy_class_name = class_name_from_model(name) klass = policy_class_name.safe_constantize klass || define_policy_class(policy_class_name) end |
.class_name_from_model(name) ⇒ Object
14 15 16 17 |
# File 'lib/skinny_controllers/lookup/policy.rb', line 14 def class_name_from_model(name) parent_namespace = namespace.present? ? "#{namespace}::" : '' "#{parent_namespace}#{name}" + SkinnyControllers.policy_suffix end |
.define_policy_class(name) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/skinny_controllers/lookup/policy.rb', line 19 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) ⇒ Object
40 41 42 |
# File 'lib/skinny_controllers/lookup/policy.rb', line 40 def method_name_for_operation(class_name) class_name.demodulize.downcase + POLICY_METHOD_SUFFIX end |
.namespace ⇒ Object
44 45 46 |
# File 'lib/skinny_controllers/lookup/policy.rb', line 44 def namespace SkinnyControllers.policies_namespace end |