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
-
#hereditaria? ⇒ true | false
Determina si el documento es una subclase de otro documento.
-
#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.
-
#clase_raíz ⇒ Mongoid::Documento
Devuelve la clase raíz del árbol STI en la que participa la clase actual.
Detalles del método de instancia
#¿hereditaria? ⇒ true | false
Determina si el documento es una subclase de otro documento.
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
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_class ⇒ Mongoid::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.
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 |