class Dancan::PolicyFinder
Attributes
object[R]
Public Class Methods
new(object)
click to toggle source
# File lib/dancan/policy_finder.rb, line 5 def initialize(object) @object = object end
Public Instance Methods
policy()
click to toggle source
# File lib/dancan/policy_finder.rb, line 9 def policy klass = find klass = klass.constantize if klass.is_a?(String) klass rescue NameError nil end
policy!()
click to toggle source
# File lib/dancan/policy_finder.rb, line 17 def policy! policy or raise NotDefinedError, "unable to find policy #{find} for #{object}" end
Private Instance Methods
find()
click to toggle source
# File lib/dancan/policy_finder.rb, line 23 def find if object.respond_to?(:policy_class) object.policy_class elsif object.class.respond_to?(:policy_class) object.class.policy_class else klass = if object.respond_to?(:model_name) object.model_name elsif object.class.respond_to?(:model_name) object.class.model_name elsif object.is_a?(Class) object elsif object.is_a?(Symbol) object.to_s.classify else object.class end "#{klass}Policy" end end