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.
-
#root_class ⇒ Mongoid::Document
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.
44 45 46 |
# Archivo 'lib/mongoid/traversable.rb', línea 44 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.
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 heredada(subclase) super # Registrar la nueva subclase en el subsistema del solucionador 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.post_processed_defaults = post_processed_defaults.dup subclase._declared_scopes = encriptada.Nuevo { |encriptada, 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.Incluir 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.
53 54 55 56 57 58 |
# Archivo 'lib/mongoid/traversable.rb', línea 53 def root_class root = sí mismo root = root.superclase mientras root.¿hereditaria? root end |