Módulo: Mongoid::Factory

Ampliado por:
Fábrica
Incluido en:
Fábrica
Definido en:
lib/mongoid/factory.rb

Overview

Instantiates los documentos que proceden de la base de datos.

Definido bajo Namespace

clase: Instanciador

Resumen del método de instancia colapsar

Detalles del método de instancia

#build(klass, attributes = nil) ⇒ Document

Compila un nuevo Document utilizando los atributos suministrados.

Este método instancia klass o un descendiente de klass si los atributos incluyen la clave discriminadora de klass.

Si los atributos contienen la clave del discriminador (que por defecto es _type) y el valor del discriminador no corresponde a un descendiente de klass, entonces este método creará una instancia de klass.

Ejemplos:

Compila el documento.

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

Parámetros:

  • klass (clase)

    La clase desde la que instanciar si _type no está presente.

  • atributos (encriptada) (valor por defecto: nil)

    Los atributos del documento.

  • opciones (encriptada)

    un conjunto personalizable de opciones

Devuelve:



154
155
156
# Archivo 'lib/mongoid/factory.rb', línea 154

def compilar(klass, atributos = nulo)
  execute_build(klass, atributos)
end

#execute_build(klass, attributes = nil, options = {}) ⇒ Documento

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Nota:

Un error en Ruby 2.x impide que el hash de opciones sea argumentos de palabras clave. Una vez que dejemos de dar soporte a Ruby 2.x, podremos reimplementar el hash de opciones como argumentos clave. Consulta https://bugs.ruby-lang.org/issues/15753

Ejecute compilar.

Parámetros:

  • klass (clase)

    La clase desde la que instanciar si _type no está presente.

  • atributos (encriptada) (valor por defecto: nil)

    Los atributos del documento.

  • opciones (encriptada) (por defecto: {})

    Las opciones para usar.

Opciones Hash (options):

  • :ejecutar_callbacks (true | false)

    El indicador especifica si se deben ejecutar las devoluciones de llamada.

Devuelve:



175
176
177
178
179
180
# Archivo 'lib/mongoid/factory.rb', línea 175

def execute_build(klass, atributos = nulo, opciones = {})
  atributos ||= {}
  dvalue = atributos[klass.discriminador_clave] || atributos[klass.discriminador_clave.to_sym]
  tipo = klass.get_discriminator_mapping(dvalue) || klass
  tipo.construct_document(atributos, opciones)
end

#execute_from_db(klass, attributes = nil, criteria = nil, selected_fields = nil, execute_callbacks: Threaded.execute_callbacks?) ⇒ documento

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Ejecutar desde_db.

Parámetros:

  • klass (clase)

    La clase desde la que instanciar si _type no está presente.

  • atributos (encriptada) (valor por defecto: nil)

    Los atributos del documento.

  • criterios (Criterios) (valor por defecto: nil)

    Objeto de criterios opcional.

  • selected_fields (encriptada) (valor por defecto: nil)

    Campos que se recuperaron a través de #only. Si se especifican selected_fields, los campos que no estén listados en él no serán accesibles en el documento devuelto.

  • execute_callbacks (true | false) (por defecto: Threaded.execute_callbacks?)

    Si este método debe invocar las devoluciones de llamada. Si es cierto, los callbacks se invocarán normalmente. Por el contrario, los callbacks se almacenarán en la lista pending_callbacks y será responsabilidad de quien invoca llamar a run_pending_callbacks en un momento posterior. Usa esta opción para diferir la ejecución de la función de retorno hasta que se construya todo el grafo de objetos que contiene las asociaciones embebidas.

Devuelve:



230
231
232
233
234
235
# Archivo 'lib/mongoid/factory.rb', línea 230

def execute_from_db(klass, atributos = nulo, criterios = nulo,
                    selected_fields = nulo,
                    execute_callbacks: Con hilo.¿ejecutar_callbacks?)
  Instanciador.Nuevo(klass, atributos, criterios, selected_fields)
              .instancia(execute_callbacks: execute_callbacks)
end

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

Construye un nuevo Document a partir de los atributos proporcionados cargados desde la base de datos.

Si los atributos contienen la clave discriminatoria (que por defecto es _type) y el valor discriminatorio no corresponde a un descendiente de klass, entonces este método genera un error de UnknownModel.

Si se proporciona un objeto de criterios, se utiliza de dos formas:

  1. Si el criterio tiene una lista de campos especificados a través de #only, solo esos campos se llenan en el documento devuelto.
  2. Si los criterios tienen una asociación de referencia (es decir, este document se está instanciando como una asociación de otro document), el otro document también se incluye en la asociación inversa del document devuelto, si existe alguna.

Ejemplos:

Compila el documento.

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

Parámetros:

  • klass (clase)

    La clase desde la que instanciar si _type no está presente.

  • atributos (encriptada) (valor por defecto: nil)

    Los atributos del documento.

  • criterios (Criterios) (valor por defecto: nil)

    Objeto de criterios opcional.

  • selected_fields (encriptada) (valor por defecto: nil)

    Campos que se recuperaron a través de #only. Si se especifican selected_fields, los campos que no estén listados en él no serán accesibles en el documento devuelto.

Devuelve:



208
209
210
# Archivo 'lib/mongoid/factory.rb', línea 208

def from_db(klass, atributos = nulo, criterios = nulo, selected_fields = nulo)
  execute_from_db(klass, atributos, criterios, selected_fields)
end