Classe: Mongoid::PersistenceContext

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Definido em:
lib/mongoid/persistence_context.rb

Visão geral

Lógica de encapsulamento de objetos para definir/obter uma collection e nome de banco de dados de dados e um cliente com opções específicas a serem usadas ao persistir modelos.

Colapsode resumo constante

EXTRA_OPTIONS =

Opções extras, além das opções do cliente driver, que determinam o contexto de persistência.

Retorna:

  • (Array<Símbolo><Symbol>)

    A lista de opções extras além das opções do cliente que determinam o contexto de persistência.

[ :cliente,
  :collection
].congelar
VALID_OPTIONS =

A lista completa de opções válidas de contexto de persistência.

Retorna:

  • (Array<Símbolo><Symbol>)

    A lista completa de opções que definem o contexto de persistência.

( mongo::Cliente::VALID_OPTIONS + EXTRA_OPTIONS ).congelar

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de classe

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(objeto, opts = {}) ➤ PersistenceContext

Inicialize o objeto de contexto de persistência.

Exemplos:

Crie um novo contexto de persistência.

PersistenceContext.new(model, collection: 'other')

Parâmetros:

  • objeto (Objeto)

    A classe ou instância de modelo para a qual um contexto de persistência deve ser criado.

  • opciona (Hash) (padrão para: {})

    As opções de contexto de persistência.



45
46
47
48
# File 'lib/mongoid/persistence_context.rb', linha 45

def inicializar(objeto, opciona = {})
  @ objeto = objeto
  set_options!(opciona)
end

Detalhes do atributo da instância

#opçõesHash (somente leitura)

As opções que definem este contexto de persistência.

Retorna:

  • (Hash)

    As opções de contexto de persistência.



20
21
22
# File 'lib/mongoid/persistence_context.rb', linha 20

def opções
  @opções
end

Detalhes do método de classe

.limpar(objeto, cluster = nil, original_context = nil) ➤ Objeto

Limpe o contexto de persistência de uma classe ou instância de modelo específica.

Exemplos:

Limpe o contexto de persistência de uma classe ou instância de modelo.

PersistenceContext.clear(model)

Parâmetros:

  • objeto (Classe | Objeto)

    A instância de classe ou modelo.

  • cluster (Mongo::Cluster) (padrão para: nil)

    O cluster original antes desse contexto ser usado.

  • original_context (Mongoid::PersistenceContext) (padrão para: nil)

    O contexto de persistência original que foi configurado antes deste contexto ser usado.



267
268
269
270
271
272
273
274
275
# File 'lib/mongoid/persistence_context.rb', linha 267

def Limpar(objeto, cluster = nada, original_context = nada)
  se Contexto = obter(objeto)
    a menos que cluster.nada? || Contexto.cluster.igual?(cluster)
      Contexto.Cliente.Fechar a menos que Contexto.reusable_client?
    end
  end
garantir
  store_context(objeto, original_context)
end

.get(objeto) ➤ Mongoid::PersistenceContext

Obtenha o contexto de persistência para uma classe específica ou instância de modelo.

Exemplos:

Obtenha o contexto de persistência para uma classe ou instância de modelo.

PersistenceContext.get(model)

Parâmetros:

  • objeto (Objeto)

    A instância de classe ou modelo.

Retorna:



254
255
256
# File 'lib/mongoid/persistence_context.rb', linha 254

def obter(objeto)
  get_context(objeto)
end

.set(object, options_or_context) ➤ Mongoid::PersistenceContext

Defina o contexto de persistência para uma classe ou instância de modelo específica.

Se já houver um conjunto de contextos de persistência, as opções no contexto existente serão combinadas com as opções fornecidas para a chamada do conjunto.

Exemplos:

Defina o contexto de persistência para uma classe ou instância de modelo.

PersistenceContext.set(model)

Parâmetros:

  • objeto (Objeto)

    A instância de classe ou modelo.

  • options_or_context (Hash | Mongoid::PersistenceContext)

    As opções de persistência ou um objeto de contexto de persistência.

Retorna:



231
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/mongoid/persistence_context.rb', linha 231

def set(objeto, options_or_context)
  exists_context = get_context(objeto)
  exists_options = se exists_context
    exists_context.opções
  mais
    {}
  end
  se options_or_context.is_a?(PersistenceContext)
    options_or_context = options_or_context.opções
  end
  new_options = exists_options.mesclar(options_or_context)
  Contexto = PersistenceContext.Novo(objeto, new_options)
  store_context(objeto, Contexto)
end

Detalhes do método de instância

#==(outro) ➤ verdadeiro | false

Determine se esse contexto de persistência é igual a outro.

Exemplos:

Compare dois contextos de persistência.

context == other_context

Parâmetros:

  • Outro (Objeto)

    O objeto a ser comparado com este.

Retorna:

  • (verdadeiro | falso)

    Se os dois contextos de persistência são iguais.



150
151
152
153
# File 'lib/mongoid/persistence_context.rb', linha 150

def ==(Outro)
  Método false a menos que Outro.is_a?(PersistenceContext)
  opções == Outro.opções
end

#clienteMongo::Client

Obtenha o cliente para este contexto de persistência.

Exemplos:

Obtenha o cliente para este contexto de persistência.

context.client

Retorna:

  • (Mongo::Client)

    O cliente para este contexto de persistência.



116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/mongoid/persistence_context.rb', linha 116

def Cliente
  @cliente ||= começar
    Cliente = Clientes.with_name(client_name)
    se database_name_option
      Cliente = Cliente.Usar(nome do banco de dados)
    end
    a menos que client_options.vazio?
      Cliente = Cliente.com(client_options)
    end
    Cliente
  end
end

#client_nameSymbol

Obtenha o nome do cliente para este contexto de persistência.

Exemplos:

Obtenha o nome do cliente para este contexto de persistência.

context.client_name

Retorna:

  • (Símbolo)

    O nome do cliente para este contexto de persistência.



136
137
138
139
140
# File 'lib/mongoid/persistence_context.rb', linha 136

def client_name
  @client_name ||= opções[:cliente] ||
                     Threaded.client_override ||
                     __evaluate__(storage_options[:cliente])
end

#collection(parent = nil) ➤ Mongo::Collection

Obtenha a coleção para este contexto de persistência.

Exemplos:

Obtenha a coleção para este contexto de persistência.

context.collection

Parâmetros:

  • principal (Objeto) (padrão para: nil)

    O objeto principal cujo nome de coleção é usado em vez do nome de coleção deste contexto de persistência.

Retorna:

  • (Mongo::Collection)

    A coleção para este contexto de persistência.



80
81
82
83
84
# File 'lib/mongoid/persistence_context.rb', linha 80

def collection(principal = nada)
  principal ?
    principal.collection.com(client_options.exceto(:database, "bancode dados")) :
    Cliente[collection_name.to_sym]
end

#collection_namestring

Obtenha o nome da coleção para este contexto de persistência.

Exemplos:

Obtenha o nome da coleção para este contexto de persistência.

context.collection_name

Retorna:

  • (string)

    O nome da coleção para este contexto de persistência.



93
94
95
96
# File 'lib/mongoid/persistence_context.rb', linha 93

def collection_name
  @collection_name ||= (__evaluate__(opções[:collection] ||
                         storage_options[:collection]))
end

#database_namestring

Obtenha o nome do banco de dados para este contexto de persistência.

Exemplos:

Obtenha o nome do banco de dados para este contexto de persistência.

context.database_name

Retorna:

  • (string)

    O nome do banco de dados de dados para este contexto de persistência.



105
106
107
# File 'lib/mongoid/persistence_context.rb', linha 105

def nome do banco de dados
  __evaluate__(database_name_option) || Cliente.database.name
end

#for_child(documento) ➤ PersistenceContext

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna um novo contexto de persistência que é consistente com o documento secundário fornecido, herdando as configurações mais apropriadas.

Parâmetros:

Retorna:



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/mongoid/persistence_context.rb', linha 58

def for_child(documento)
  se documento.is_a?(classe)
    Método auto se documento == (@ objeto.is_a?(classe) ? @ objeto : @ objeto.classe)
  elsif documento.is_a?(Mongoid::Documento)
    Método auto se documento.classe == (@ objeto.is_a?(classe) ? @ objeto : @ objeto.classe)
  mais
    aumentar ArgumentError, 'deve especificar uma classe ou uma instância de documento'
  end

  PersistenceContext.Novo(documento, opções.mesclar(documento.storage_options))
end

#ordered_storage_optionsHash | nada

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

O subconjunto de opções fornecidas que podem ser usadas como opções de armazenamento.

Retorna:

  • (Hash | nulo)

    as opções de armazenamento solicitadas ou nulo se nenhuma for especificada.



177
178
179
180
# File 'lib/mongoid/persistence_context.rb', linha 177

def ordered_storage_options
  fatia = @opções.fatia(*Mongoid::Clientes::Validadores::Armazenamento::VALID_OPTIONS)
  fatia.algum? ? fatia : nada
end

#reusable_client?verdadeiro | false

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Se o cliente do contexto pode ser reutilizado posteriormente e, portanto, não deve ser fechado.

Se o contexto de persistência for solicitado apenas com a opção : cliente , isso significa que o contexto deve usar um cliente configurado em mongoid.yml. Esses clientes não devem ser fechados quando o contexto for limpo, pois serão reutilizados posteriormente.

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se o cliente puder ser reutilizado; caso contrário, falso.



166
167
168
# File 'lib/mongoid/persistence_context.rb', linha 166

def reusable_client?
  @opções.keys == [:cliente]
end