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

Detalles del método de instancia

#hereditario?verdadero | falso

Determina si el documento es una subclase de otro documento.

Ejemplos:

Comprueba si el documento es una subclase.

Square.hereditary?

Devuelve:

  • (verdadero | falso)

    Verdadero si es hereditario, falso si no.



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

Ejemplos:

Heredar de esta clase.

Person.inherited(Doctor)

Parámetros:

  • subclase (Clase) -

    La clase heredera.



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_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 misma.

Devuelve:



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