Módulo: Mongoid::Traversable::ClassMethods
- Definido en:
- lib/mongoid/traversable.rb
Overview
Métodos a nivel de clase para el comportamiento Traversable.
Colapso del resumen del método de instancia
-
#hereditario? ⇒ verdadero | falso
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 la clase hija para que comience, imitando el comportamiento del antiguo class_inheritable_accessor que quedó obsoleto en Rails edge.
-
#clase_raíz ⇒ Mongoid::Documento
Devuelve la clase raíz del árbol STI en el que participa la clase actual.
Detalles del método de instancia
#hereditario? ⇒ verdadero | falso
Determina si el documento es una subclase de otro documento.
43 44 45 |
# Archivo 'lib/mongoid/traversable.rb', línea 43 def ¿hereditario? !!(superclase < Mongoid::Documento) end |
#heredado(subclase) ⇒ Objeto
Al heredar, queremos copiar los campos de la clase padre y configurarlos en la clase hija para que comience, imitando el comportamiento del antiguo class_inheritable_accessor que quedó obsoleto en Rails edge.
rubocop:deshabilitar Métricas/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.registro(subclase) @_type = nulo subclase.campos con alias = campos con alias.dup subclase.campos_localizados = campos_localizados.dup subclase.campos = campos.dup subclase.valores predeterminados preprocesados = valores predeterminados preprocesados.dup subclase.valores predeterminados posprocesados = valores predeterminados posprocesados.dup subclase._ámbitos_declarados = Picadillo.Nuevo { |_picadillo, clave| _ámbitos_declarados[clave] } subclase.valor_discriminador = subclase.Nombre # Necesitamos hacer esto aquí porque el método discriminator_value es # anulado en la subclase anterior. subclase.incluyen DiscriminatorRetrieval # Solo necesitamos el campo _type si la herencia está en juego, pero necesitamos # agregue también a la clase raíz para compatibilidad con versiones anteriores. return Si campos.key?(clave discriminadora) default_proc = -> { yo.clase.valor_discriminador } Campo(clave discriminadora, 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 misma.
52 53 54 55 56 57 |
# Archivo 'lib/mongoid/traversable.rb', línea 52 def clase raíz raíz = yo raíz = raíz.superclase mientras raíz.¿hereditario? raíz end |