Sha256: 3aab10b981eccb7770db854af683b472f965559694917a0517bf69586aaa82c0
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 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! raise NotDefinedError, "unable to find policy scope of nil" if object.nil? scope or raise NotDefinedError, "unable to find scope `#{find}::Scope` for `#{object.inspect}`" end def policy! raise NotDefinedError, "unable to find policy of nil" if object.nil? policy or raise NotDefinedError, "unable to find policy `#{find}` for `#{object.inspect}`" end private def find if object.nil? nil elsif 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.camelize elsif object.is_a?(Array) object.join('/').camelize else object.class end "#{klass}#{SUFFIX}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pundit-1.0.1 | lib/pundit/policy_finder.rb |