Sha256: 9f72de6363c45ea095a4e00be194907f5c80aed48b3155ef1195642b6e40c984

Contents?: true

Size: 849 Bytes

Versions: 4

Compression:

Stored size: 849 Bytes

Contents

module Godmin
  module Authorization
    class PolicyFinder
      class << self
        def find(object)
          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 Godmin.namespace
            "#{Godmin.namespace.classify}::#{klass}Policy"
          else
            "#{klass}Policy"
          end.constantize
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
godmin-0.12.0 lib/godmin/authorization/policy_finder.rb
godmin-0.11.2 lib/godmin/authorization/policy_finder.rb
godmin-0.11.1 lib/godmin/authorization/policy_finder.rb
godmin-0.11.0 lib/godmin/authorization/policy_finder.rb