Módulo: Mongoid::Factory

Estendido por:
Factory
Incluído em:
Factory
Definido em:
lib/mongoid/factory.rb

Visão geral

Instancia documentos obtidos no banco de banco de dados.

Definido sob namespace

Classes: Instanciador

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#build(klass, atributos = nil) ➤ Documento

Constrói um novo Document a partir dos atributos fornecidos.

Este método instancia o klass ou um descendente do klass se os atributos incluírem a chave discriminadora do klass.

Se os atributos contiverem a chave discriminadora (que é _type por padrão) e o valor discriminador não corresponder a um descendente de klass, esse método criará uma instância de klass.

Exemplos:

Construa o documento.

Mongoid::Factory.build(Person, { "name" => "Durran" })

Parâmetros:

  • classe (Classe)

    A classe da qual instanciar se _type não estiver presente.

  • attributes (Hash) (padrão para: nil)

    Os atributos do documento .

  • opções (Hash)

    um conjunto personalizável de opções

Retorna:



154
155
156
# Arquivo 'lib/mongoid/factory.rb', linha 154

def COMPILAR(classe, attributes = nada)
  execute_build(classe, attributes)
end

#execute_build(klass, atributos = nil, opções = {}) ➤ Documento

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.

Observação:

Um bug Ruby 2.x impede que o hash de opções seja argumentos de palavra-chave. Depois de eliminarmos o suporte para Ruby 2.x, podemos reimplementar o hash de opções como argumentos de palavra-chave. Consulte bugs.ruby-lang.org/issues/15753

Execute a construção.

Parâmetros:

  • classe (Classe)

    A classe da qual instanciar se _type não estiver presente.

  • attributes (Hash) (padrão para: nil)

    Os atributos do documento .

  • opções (Hash) (padrão para: {})

    As opções a serem usadas.

Hash de opções (opções):

  • :execute_callbacks (verdadeiro | falso)

    O sinalizador especifica se as chamadas de resposta devem ser executadas.

Retorna:



175
176
177
178
179
180
181
182
183
184
# Arquivo 'lib/mongoid/factory.rb', linha 175

def execute_build(classe, attributes = nada, opções = {})
  attributes ||= {}
  dvalue = attributes[classe.discriminator_key] || attributes[classe.discriminator_key.to_sym]
  type = classe.get_discriminator_mapping(dvalue)
  se type
    type.construct_document(attributes, opções)
  mais
    classe.construct_document(attributes, opções)
  end
end

#execute_from_db(klass, atributos = nil, critérios = nil, selecionados_campos = nil, execute_callbacks: Threaded.execute_callbacks?) ➤ Documento

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.

Executar from_db.

Parâmetros:

  • classe (Classe)

    A classe da qual instanciar se _type não estiver presente.

  • attributes (Hash) (padrão para: nil)

    Os atributos do documento .

  • critério (Critérios) (padrão para: nil)

    Objeto de critérios opcionais.

  • campos_selecionados (Hash) (padrão para: nil)

    Campos que foram recuperados via #only. Se campos selecionados forem especificados, os campos não listados nele não estarão acessíveis no documento retornado.

  • execute_callbacks (verdadeiro | falso) (padrão para: Threaded.execute_callbacks?)

    Se esse método deve invocar as chamadas de resposta. Se verdadeiro, as chamadas de resposta serão invocadas normalmente. Se falso, as chamadas de resposta serão armazenadas na lista pending_callbacks e o chamador será responsável por invocar run_pending_callbacks posteriormente. Use essa opção para adiar a execução da chamada de resposta de resposta até que todo o gráfico de objeto que contém associações incorporadas seja construído.

Retorna:



234
235
236
237
238
239
# Arquivo 'lib/mongoid/factory.rb', linha 234

def execute_from_db(classe, attributes = nada, critério = nada,
                    campos_selecionados = nada,
                    execute_callbacks: Threaded.execute_callbacks?)
  Instanciador.Novo(classe, attributes, critério, campos_selecionados)
              .instância(execute_callbacks: execute_callbacks)
end

#from_db(klass, attributes = nil, criteria = nil, selected_fields = nil) ⇒ Document

Constrói um novo Document a partir dos atributos fornecidos carregados do banco de banco de dados.

Se os atributos contiverem a chave discriminadora (que é _type por padrão) e o valor discriminador não corresponder a um descendente de klass, esse método gerará um erro UnknownModel.

Se um objeto de critérios for fornecido, ele será usado de duas maneiras:

  1. Se o critério tiver uma lista de campos especificados por meio de #only, somente esses campos serão preenchidos no documento retornado.

  2. Se o critério tiver uma associação de referência (ou seja, este documento está sendo instanciado como uma associação de outro documento), o outro documento também será preenchido na associação reversa do documento retornado, se houver.

Exemplos:

Construa o documento.

Mongoid::Factory.from_db(Person, { "name" => "Durran" })

Parâmetros:

  • classe (Classe)

    A classe da qual instanciar se _type não estiver presente.

  • attributes (Hash) (padrão para: nil)

    Os atributos do documento .

  • critério (Critérios) (padrão para: nil)

    Objeto de critérios opcionais.

  • campos_selecionados (Hash) (padrão para: nil)

    Campos que foram recuperados via #only. Se campos selecionados forem especificados, os campos não listados nele não estarão acessíveis no documento retornado.

Retorna:



212
213
214
# Arquivo 'lib/mongoid/factory.rb', linha 212

def from_db(classe, attributes = nada, critério = nada, campos_selecionados = nada)
  execute_from_db(classe, attributes, critério, campos_selecionados)
end