module Mongoid::Traversable::ClassMethods
Public Instance Methods
Source
# File lib/mongoid/traversable.rb, line 282 def hereditary? !!(Mongoid::Document > superclass) end
Determines if the document is a subclass of another document.
@example Check if the document is a subclass.
Square.hereditary?
@return [ true, false ] True if hereditary, false if not.
Source
# File lib/mongoid/traversable.rb, line 296 def inherited(subclass) super @_type = nil subclass.aliased_fields = aliased_fields.dup subclass.localized_fields = localized_fields.dup subclass.fields = fields.dup subclass.pre_processed_defaults = pre_processed_defaults.dup subclass.post_processed_defaults = post_processed_defaults.dup subclass._declared_scopes = Hash.new { |hash,key| self._declared_scopes[key] } subclass.discriminator_value = subclass.name # We need to do this here because the discriminator_value method is # overriden in the subclass above. class << subclass include DiscriminatorRetrieval end # We only need the _type field if inheritance is in play, but need to # add to the root class as well for backwards compatibility. unless fields.has_key?(self.discriminator_key) default_proc = lambda { self.class.discriminator_value } field(self.discriminator_key, default: default_proc, type: String) end end
When inheriting, we want to copy the fields from the parent class and set the on the child to start, mimicking the behavior of the old class_inheritable_accessor that was deprecated in Rails
edge.
@example Inherit from this class.
Person.inherited(Doctor)
@param [ Class ] subclass The inheriting class.
@since 2.0.0.rc.6
Calls superclass method