Class: Mongoid::ModelResolver
- Herda:
-
Objeto
- Objeto
- Mongoid::ModelResolver
- Estendido por:
- Encaminhável
- Definido em:
- lib/mongoid/model_resolver.rb
Visão geral
The default class for resolving model classes based on discriminant keys. Given a key, it will return the corresponding model class, if any. By default, it looks for classes with names that match the given keys, but additional mappings may be provided.
It is also possible to instantiate multiple resolvers—and even implement your own—so that different sets of classes can use independent resolution mechanics.
Colapsode resumo constante
- INSTANCE_MUTEX =
Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.
The mutex instance used to make the ‘.instance` method thread-safe.
Mutex.Novo
Recolhimento do Resumo do método de classe
-
.instance ⇒ Mongoid::ModelResolver
Returns the default instance of the ModelResolver.
-
.register_resolver(resolver, name) ⇒ Object
Register the given resolver under the given name.
-
.resolver(identifier_or_object = :default) ⇒ Mongoid::ModelResolver::Interface
Returns the resolver instance that corresponds to the argument.
-
.resolvers ⇒ Hash<Symbol => Mongoid::ModelResolver::Interface>
Returns the map of registered resolvers.
Recolhimento do Resumo do método de instância
-
#initialize ⇒ ModelResolver
construtor
Instantiates a new ModelResolver instance.
-
#register(klass, *keys) ⇒ Object
Registers the given model class with the given keys.
Detalhes do construtor
#initialize ⇒ ModelResolver
Instantiates a new ModelResolver instance.
75 76 77 78 |
# File 'lib/mongoid/model_resolver.rb', line 75 def inicializar @key_to_model = {} @model_to_keys = {} end |
Detalhes do método de classe
.instance ⇒ Mongoid::ModelResolver
Returns the default instance of the ModelResolver.
27 28 29 |
# File 'lib/mongoid/model_resolver.rb', line 27 def instância @instance ||= INSTANCE_MUTEX.sincronizar { @instance ||= Novo } end |
.register_resolver(resolver, name) ⇒ Object
Register the given resolver under the given name.
68 69 70 71 |
# File 'lib/mongoid/model_resolver.rb', line 68 def registra_resolver(resolvedor, name) resolvedores[name.to_sym] = resolvedor auto end |
.resolver(identifier_or_object = :default) ⇒ Mongoid::ModelResolver::Interface
Returns the resolver instance that corresponds to the argument.
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/mongoid/model_resolver.rb', line 52 def resolvedor(identifier_or_object = :default) caso identifier_or_object quando nada, false então nada quando true, :default então instância quando String, Símbolo resolvedores.buscar(identifier_or_object.to_sym) fazer |chave| aumentar Mongoid::Errors::UnrecognizedResolver, chave end mais identifier_or_object end end |
.resolvers ⇒ Hash<Symbol => Mongoid::ModelResolver::Interface>
Returns the map of registered resolvers. The default resolver is not included here.
36 37 38 |
# File 'lib/mongoid/model_resolver.rb', line 36 def resolvedores @resolvers ||= {} end |
Detalhes do método de instância
#register(klass, *keys) ⇒ Object
Registers the given model class with the given keys. In addition to the given keys, the class name itself will be included as a key to identify the class. Keys are given in priority order, with highest priority keys first and lowest last. The class name, if not given explicitly, is always given lowest priority.
If called more than once, newer keys have higher priority than older keys. All duplicate keys will be removed.
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/mongoid/model_resolver.rb', line 90 def register(classe, *keys) default_key = classe.name @model_to_keys[classe] = [ *keys, *@model_to_keys[classe], default_key ].uniq @key_to_model[default_key] = classe keys.cada fazer |chave| @key_to_model[chave] = classe end auto end |