Módulo: Mongoid::Traversable::ClassMethods

Definido en:
lib/mongoid/traversable.rb

Overview

Métodos a nivel de clase para el comportamiento Traversable.

Resumen del método de instancia colapsar

Detalles del método de instancia

#¿hereditaria?true | false

Determina si el documento es una subclase de otro documento.

Ejemplos:

Comprueba si el documento es una subclase.

Square.hereditary?

Devuelve:

  • (true | false)

    Verdadero si es hereditario, falso si no.



43
44
45
# Archivo 'lib/mongoid/traversable.rb', línea 43

def ¿hereditaria?
  !!(superclase < Mongoid::Documento)
end

#heredado(subclase) ⇒ Objeto

Al heredar, queremos copiar los campos de la clase padre y configurarlos en el hijo para comenzar, imitando el comportamiento del antiguo class_inheritable_accessor que fue obsoleto en Rails edge.

rubocop:disable Metrics/AbcSize

Ejemplos:

Hereda de esta clase.

Person.inherited(Doctor)

Parámetros:

  • subclase (Clase) -

    La clase que hereda.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Archivo 'lib/mongoid/traversable.rb', línea 69

def heredado(subclase)
  super

  # Registrar la nueva subclase con el subsistema de resolución
  Mongoid::ModelResolver.registrar(subclase)

  @_type = nulo
  subclase.campos_alias = campos_alias.dup
  subclase.campos_localizados = campos_localizados.dup
  subclase.campos = campos.dup
  subclase.pre_processed_defaults = pre_processed_defaults.dup
  subclase.valores predeterminados posprocesados = valores predeterminados posprocesados.dup
  subclase._declared_scopes = Picadillo.Nuevo { |_picadillo, llave| _declared_scopes[llave] }
  subclase.valor_discriminador = subclase.Nombre

  # Necesitamos hacer esto aquí porque el método discriminator_value es
  # sobreescrito en la subclase anterior.
  subclase.incluyen DiscriminatorRetrieval

  # Solo necesitamos el campo _type si hay herencia en juego, pero necesitamos
  # agregue a la clase raíz también para garantizar la compatibilidad hacia atrás.
  return si campos.key?(discriminador_clave)

  default_proc = -> { sí mismo.clase.valor_discriminador }
  Campo(discriminador_clave, por defecto: default_proc, tipo: String)
end

#root_classMongoid::documento

Devuelve la clase raíz del árbol STI en el que participa la clase actual. Si la clase no es una subclase STI, esto devuelve la clase en sí misma.

Devuelve:



52
53
54
55
56
57
# Archivo 'lib/mongoid/traversable.rb', línea 52

def root_class
  root = sí mismo
  root = root.superclase mientras root.¿hereditaria?

  root
end