Sha256: 4327e8fe85044eb7ae53fa5f452dbdda16ae352368ec067fb5d335e3bad29ec2

Contents?: true

Size: 1.05 KB

Versions: 35

Compression:

Stored size: 1.05 KB

Contents

module ActiveFedora
  module Inheritance
    extend ActiveSupport::Concern

    module ClassMethods
      # Returns the class descending directly from ActiveFedora::Base, or
      # an abstract class, if any, in the inheritance hierarchy.
      #
      # If A extends ActiveFedora::Base, A.base_class will return A. If B descends from A
      # through some arbitrarily deep hierarchy, B.base_class will return A.
      #
      # If B < A and C < B and if A is an abstract_class then both B.base_class
      # and C.base_class would return B as the answer since A is an abstract_class.
      def base_class
        return File if self <= File

        unless self <= Base
          raise ActiveFedoraError, "#{name} doesn't belong in a hierarchy descending from ActiveFedora"
        end

        if self == Base || superclass == Base || superclass.abstract_class?
          self
        else
          superclass.base_class
        end
      end

      # Abstract classes can't have default scopes.
      def abstract_class?
        self == Base
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
active-fedora-13.3.0 lib/active_fedora/inheritance.rb
active-fedora-12.2.4 lib/active_fedora/inheritance.rb
active-fedora-13.2.7 lib/active_fedora/inheritance.rb
active-fedora-13.2.5 lib/active_fedora/inheritance.rb
active-fedora-13.2.4 lib/active_fedora/inheritance.rb
active-fedora-12.2.3 lib/active_fedora/inheritance.rb
active-fedora-13.2.3 lib/active_fedora/inheritance.rb
active-fedora-13.2.2 lib/active_fedora/inheritance.rb
active-fedora-13.2.0 lib/active_fedora/inheritance.rb
active-fedora-13.1.3 lib/active_fedora/inheritance.rb
active-fedora-11.5.6 lib/active_fedora/inheritance.rb
active-fedora-12.2.2 lib/active_fedora/inheritance.rb
active-fedora-11.2.1 lib/active_fedora/inheritance.rb
active-fedora-12.2.1 lib/active_fedora/inheritance.rb
active-fedora-12.0.3 lib/active_fedora/inheritance.rb
active-fedora-11.5.5 lib/active_fedora/inheritance.rb
active-fedora-13.1.2 lib/active_fedora/inheritance.rb
active-fedora-13.1.1 lib/active_fedora/inheritance.rb
active-fedora-13.1.0 lib/active_fedora/inheritance.rb
active-fedora-13.0.0 lib/active_fedora/inheritance.rb