Clase: Mongoid::ModelResolver
- Hereda:
-
Objeto
- Objeto
- Mongoid::ModelResolver
- 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
-
.instancia ⇒ Mongoid::ModelResolver
Devuelve la instancia por defecto del ModelResolver.
-
.register_resolver(resolver, name) ⇒ Object
Registre el resolver dado bajo el nombre dado.
-
.resolver(identificador_u_objeto =:predeterminado) ⇒ Mongoid::ModelResolver::Interface
Devuelve la instancia de resolvedor que corresponde al argumento.
-
.resolvers ⇒ Hash<Símbolo => Mongoid::ModelResolver::Interfaz>
Devuelve el mapa de resolutores registrados.
Resumen del método de instancia colapsar
-
#initialize ⇒ ModelResolver
constructor
Crea una nueva instancia de ModelResolver.
-
#register(klass, *keys) ⇒ objeto
Registra la clase de modelo dada con las claves dadas.
Detalles del constructor
#inicializar ⇒ ResolveModelos
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
.instancia ⇒ Mongoid::ModelResolver
Devuelve la instancia por defecto del ModelResolver.
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.
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.
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 |
.resolvers ⇒ Hash<Símbolo => Mongoid::ModelResolver::Interface>
Devuelve el mapa de resolutores registrados. El resolvedor por defecto no está incluido aquí.
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.
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 |