Clase: Mongoid::ModelResolver

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Definido en:
lib/mongoid/model_resolver.rb

Overview

La clase por defecto para resolver las clases de modelo basadas en claves discriminantes. Dada una clave, devolverá la clase de modelo correspondiente, si existe. Por defecto, busca clases cuyos nombres coincidan con las claves proporcionadas, pero se pueden proporcionar asignaciones adicionales.

También es posible crear múltiples solucionadores e incluso implementar los propios, de modo que diferentes conjuntos de clases puedan utilizar mecánicas de resolución independientes.

Colapso delresumen constante

INSTANCE_MUTEX =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

La instancia de mutex utilizada para hacer que el método '.instance` sea seguro para subprocesos.

Mutex (exclusión mutua).Nuevo

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Detalles del constructor

#inicializarResolveModelos

Crea una nueva instancia de ModelResolver.



75
76
77
78
# Archivo 'lib/mongoid/model_resolver.rb', línea 75

def inicializar
  @key_to_model = {}
  @model_to_keys = {}
end

Detalles del método de clase

.instanciaMongoid::ModelResolver

Devuelve la instancia por defecto del ModelResolver.

Devuelve:



27
28
29
# Archivo 'lib/mongoid/model_resolver.rb', línea 27

def instancia
  @instancia ||= MUTEX DE INSTANCIA.sincronizar { @instancia ||= Nuevo }
end

.register_resolver(resolver, name) ⇒ Object

Registre el resolver dado bajo el nombre dado.

Parámetros:

  • resolver (Mongoid::ModelResolver::Interface)

    el solucionador que se va a registrar.

  • Nombre (String | Símbolo)

    el identificador que se usará para registrar el resolver.



68
69
70
71
# Archivo 'lib/mongoid/model_resolver.rb', línea 68

def resolver_registro(resolver, Nombre)
  resolvers[Nombre.to_sym] = resolver
  sí mismo
end

.resolver(identificador_u_objeto =:predeterminado) ⇒ Mongoid::ModelResolver::Interface

Devuelve la instancia de resolvedor que corresponde al argumento.

Parámetros:

  • identificador_o_objeto (nil | true | false Symbol | String | Mongoid::ModelResolver::Interface) (por defecto: :default)

    Si es nulo o falso, devuelve nulo. Si es verdadero o :default, corresponde al resolver predeterminado. Si es cualquier otro símbolo o cadena, corresponde al resolver registrado con ese identificador. De lo contrario, debe ser una instancia del resolver.

Devuelve:

  • (Mongoid::ModelResolver::Interface)

    la instancia del resolvedor correspondiente al argumento dado.

Aumenta:

  • Mongoid::Errors::UnrecognizedResolver si el identificador dado es un símbolo o una cadena y no coincide con ningún solucionador registrado.



52
53
54
55
56
57
58
59
60
61
62
# Archivo 'lib/mongoid/model_resolver.rb', línea 52

def resolver(identificador_o_objeto = por defecto)
  caso identificador_o_objeto
  Cuando nulo, false entonces nulo
  Cuando true, por defecto entonces instancia
  Cuando String, Símbolo
    resolvers.obtener(identificador_o_objeto.to_sym) hacer |llave|
      propagar Mongoid::Errors::UnrecognizedResolver, llave
    end
  else identificador_o_objeto
  end
end

.resolversHash<Símbolo => Mongoid::ModelResolver::Interface>

Devuelve el mapa de resolutores registrados. El resolvedor por defecto no está incluido aquí.

Devuelve:

  • (Hash<Symbol => Mongoid::ModelResolver::Interface>)

    la hash de las instancias del resolvedor, mapeadas por el identificador de símbolo.



36
37
38
# Archivo 'lib/mongoid/model_resolver.rb', línea 36

def resolvers
  @resolvers ||= {}
end

Detalles del método de instancia

#register(klass, *keys) ⇒ Object

Registra la clase de modelo dada con las claves proporcionadas. Además de las claves dadas, el propio nombre de la clase se incluirá como una clave para identificar la clase. Las claves se dan por orden de prioridad, siendo primero las de mayor prioridad y último las de menor prioridad. El nombre de la clase, si no se proporciona explícitamente, siempre se le da la prioridad más baja.

Si se llama más de una vez, las claves más recientes tienen mayor prioridad que las antiguas. Se eliminarán todas las claves duplicadas.

Parámetros:

  • klass (Mongoid::Document)

    la clase de documento para registrar

  • *claves (arreglo<String>)

    la lista de claves para usar como alias (opcional)



90
91
92
93
94
95
96
97
98
99
100
101
# Archivo 'lib/mongoid/model_resolver.rb', línea 90

def registrar(klass, *claves)
  clave_predeterminada = klass.Nombre

  @model_to_keys[klass] = [ *claves, *@model_to_keys[klass], clave_predeterminada ].único
  @key_to_model[clave_predeterminada] = klass

  claves.cada hacer |llave|
    @key_to_model[llave] = klass
  end

  sí mismo
end