Classe: Mongoid::ModelResolver
- Herda:
-
Objeto
- Objeto
- Mongoid::ModelResolver
- Estendido por:
- Encaminhável
- Definido em:
- lib/mongoid/model_resolver.rb
Visão geral
A classe padrão para resolver classes de modelo com base em chaves discriminantes. Dada uma chave, ela retornará a classe de modelo correspondente, se houver. Por padrão, ele procura classes com nomes que correspondam às chaves fornecidas, mas mapeamentos adicionais podem ser fornecidos.
Também é possível instanciar vários resolvedores — e até mesmo implementar o seu próprio — para que diferentes conjuntos de classes possam usar mecanismos de resolução independentes.
Colapsode resumo constante
- INSTance_MUSEX =
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.
A instância mutex usada para tornar o método '.instance' seguro para threads.
Mutex.Novo
Recolhimento do Resumo do método de classe
-
. instância ➤ Mongoid::ModelResolver
Retorna a instância padrão do ModelResolver.
-
.registrar_resolver(resolvedor, nome) ➤ Objeto
Registre o resolvedor fornecido sob o nome fornecido.
-
.resolvedor(identifier_or_object = :default) ➤ Mongoid::ModelResolver::Interface
Retorna a instância do resolvedor que corresponde ao argumento.
-
.resolvedores ➤ Hash<Symbol => Mongoid::ModelResolver::Interface>
Retorna o mapa dos resolvedores registrados.
Recolhimento do Resumo do método de instância
-
#initialize ➤ ModelResolver
construtor
Instancia uma nova instância ModelResolver.
-
#registro(klass, *keys) ➤ Objeto
Registra a classe de modelo fornecida com as chaves fornecidas.
Detalhes do construtor
#initialize ➤ ModelResolver
Instancia uma nova instância ModelResolver.
75 76 77 78 |
# File 'lib/mongoid/model_resolver.rb', linha 75 def inicializar @key_to_model = {} @model_to_keys = {} end |
Detalhes do método de classe
. instância ➤ Mongoid::ModelResolver
Retorna a instância padrão do ModelResolver.
27 28 29 |
# File 'lib/mongoid/model_resolver.rb', linha 27 def instância @instance ||= INSTance_MUTEX.sincronizar { @instance ||= Novo } end |
.registrar_resolver(resolvedor, nome) ➤ Objeto
Registre o resolvedor fornecido sob o nome fornecido.
68 69 70 71 |
# File 'lib/mongoid/model_resolver.rb', linha 68 def registra_resolver(resolvedor, name) resolvedores[name.to_sym] = resolvedor auto end |
.resolvedor(identifier_or_object = :default) ➤ Mongoid::ModelResolver::Interface
Retorna a instância do resolvedor que corresponde ao argumento.
52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/mongoid/model_resolver.rb', linha 52 def resolvedor(identificador_or_object = :default) caso identificador_or_object quando nada, false então nada quando true, :default então instância quando String, Símbolo resolvedores.buscar(identificador_or_object.to_sym) fazer |chave| aumentar Mongoid::Errors::UnrecognizedResolver, chave end mais identificador_or_object end end |
.resolvedores ➤ Hash<Symbol => Mongoid::ModelResolver::Interface>
Retorna o mapa dos resolvedores registrados. O resolvedor padrão não está incluído aqui.
36 37 38 |
# File 'lib/mongoid/model_resolver.rb', linha 36 def resolvedores @resolvers ||= {} end |
Detalhes do método de instância
#registro(klass, *keys) ➤ Objeto
Registra a classe de modelo fornecida com as chaves fornecidas. Além das chaves fornecidas, o próprio nome da classe será incluído como uma chave para identificar a classe. As chaves são dadas em ordem de prioridade , com as chaves de maior prioridade primeiro e a mais baixa por último. O nome da classe , se não for fornecido explicitamente, sempre receberá a prioridade mais baixa.
Se chamadas mais de uma vez, as chaves mais recentes terão prioridade mais alta do que as chaves mais antigas. Todas as chaves duplicadas serão removidas.
90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/mongoid/model_resolver.rb', linha 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 |