Classe: Mongoid::ModelResolver

Herda:
Objeto
  • Objeto
mostrar tudo
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

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initializeModelResolver

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ânciaMongoid::ModelResolver

Retorna a instância padrão do ModelResolver.

Retorna:



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.

Parâmetros:

  • resolvedor (Mongoid::ModelResolver::Interface)

    o resolvedor para registrar.

  • name (string | Símbolo)

    o identificador a ser usado para registrar o resolvedor.



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.

Parâmetros:

  • identificador_or_object (nil | true | símbolo falso | string | Mongoid::ModelResolver::Interface) (padrão para: :default)

    Quando nulo ou falso, retorna nulo. Quando verdadeiro ou :default, corresponde ao resolvedor padrão. Quando qualquer outro símbolo ou string, corresponde ao resolvedor registrado com esse identificador. Caso contrário, deve ser uma instância do resolvedor em si.

Retorna:

  • (Mongoid::ModelResolver::Interface)

    a instância do resolvedor correspondente ao argumento fornecido.

Aumenta:

  • Mongoid::Errors::UnrecognizedResolver se o identificador fornecido for um símbolo ou string e não corresponder a nenhum resolvedor registrado.



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

.resolvedoresHash<Symbol => Mongoid::ModelResolver::Interface>

Retorna o mapa dos resolvedores registrados. O resolvedor padrão não está incluído aqui.

Retorna:

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

    o hash das instâncias do resolvedor, mapeado pelo identificador de símbolo.



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.

Parâmetros:

  • classe (Mongoid::Document)

    a classe de documento a ser registrada

  • *keys (Array<String>)

    a lista de chaves a serem usadas como alias (opcional)



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