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.



76
77
78
79
# File 'lib/mongoid/model_resolver.rb', linha 76

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:



28
29
30
# File 'lib/mongoid/model_resolver.rb', linha 28

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.



69
70
71
72
# File 'lib/mongoid/model_resolver.rb', linha 69

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.



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/mongoid/model_resolver.rb', linha 53

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.



37
38
39
# File 'lib/mongoid/model_resolver.rb', linha 37

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)



91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/mongoid/model_resolver.rb', linha 91

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