Sha256: 5e68bcacecff173f972eea5b534052002d70a1b79873431cf4a8fc830772a203
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
module Pundit class PolicyFinder attr_reader :object def initialize(object) @object = object end def scope policy::Scope if policy rescue NameError nil end def policy klass = find klass = klass.constantize if klass.is_a?(String) klass rescue NameError nil end def scope! scope or raise NotDefinedError, "unable to find scope #{find}::Scope for #{object}" end def policy! policy or raise NotDefinedError, "unable to find policy #{find} for #{object}" end private 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pundit-0.3.0 | lib/pundit/policy_finder.rb |