Sha256: d1932abc979784911c32ecdb78bf4a4018ef8b4648d5263fad06f514a87244c2

Contents?: true

Size: 844 Bytes

Versions: 11

Compression:

Stored size: 844 Bytes

Contents

module Godmin
  module Authorization
    class PolicyFinder
      class << self
        def find(object, namespace = nil)
          return object.policy_class if object.respond_to?(:policy_class)
          return object.class.policy_class if object.class.respond_to?(:policy_class)

          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

          if namespace
            "#{namespace}::#{klass}Policy"
          else
            "#{klass}Policy"
          end.constantize
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
godmin-1.5.0 lib/godmin/authorization/policy_finder.rb
godmin-1.4.0 lib/godmin/authorization/policy_finder.rb
godmin-1.3.1 lib/godmin/authorization/policy_finder.rb
godmin-1.3.0 lib/godmin/authorization/policy_finder.rb
godmin-1.2.0 lib/godmin/authorization/policy_finder.rb
godmin-1.1.0 lib/godmin/authorization/policy_finder.rb
godmin-1.0.0 lib/godmin/authorization/policy_finder.rb
godmin-0.12.4 lib/godmin/authorization/policy_finder.rb
godmin-0.12.3 lib/godmin/authorization/policy_finder.rb
godmin-0.12.2 lib/godmin/authorization/policy_finder.rb
godmin-0.12.1 lib/godmin/authorization/policy_finder.rb