Módulo: Mongoid::Factory

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

Overview

Crea instancias de documentos que provienen de la base de datos.

Definido en el espacio de nombres

Clases: Instanciador

Colapso del resumen del método de instancia

Detalles del método de instancia

#build(klass, attributes = nil) ⇒ Document

Construye un nuevo Document a partir de los atributos proporcionados.

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 discriminadora (que es _type por defecto) y el valor del discriminador no corresponde a un descendiente de klass, entonces este método crearía una instancia de klass.

Ejemplos:

Construir el documento.

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

Parámetros:

  • klass (Clase) -

    La clase a instanciar si _type no está presente.

  • atributos (Hash) (predeterminado: nulo)

    Los atributos del documento.

  • opciones (Hash)

    un conjunto personalizable de opciones

Devuelve:



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

def construir(klass, atributos = nulo)
  ejecutar_construcción(klass, atributos)
end

#execute_build(klass, atributos = nil, opciones = {}) ⇒ Documento

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Nota:

Un 2 error de Ruby.x impide que los hash de opciones se utilicen como argumentos de palabras clave. Una vez que se elimine el soporte para Ruby.x,2 podremos reimplementar los hash de opciones como argumentos de palabras clave. Consulte bugs.ruby-lang.org/issues/15753

Ejecute compilar.

Parámetros:

  • klass (Clase) -

    La clase a instanciar si _type no está presente.

  • atributos (Hash) (predeterminado: nulo)

    Los atributos del documento.

  • opciones (Hash) (predeterminado: {})

    Las opciones a utilizar.

Opciones Hash(opciones):

  • :ejecutar_devoluciones de llamada (true | false)

    La bandera especifica si se deben ejecutar las devoluciones de llamadas.

Devuelve:



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

def ejecutar_construcción(klass, atributos = nulo, opciones = {})
  atributos ||= {}
  dvalue = atributos[klass.clave discriminadora] || atributos[klass.clave discriminadora.a_sym]
  tipo = klass.obtener_mapeo_discriminador(dvalue)
  Si tipo
    tipo.documento_de_construcción(atributos, opciones)
  else
    klass.documento_de_construcción(atributos, opciones)
  end
end

#ejecutar_desde_db(clase, atributos = nulo, criterios = nulo, campos_seleccionados = nulo, ejecutar_devoluciones_de_llamadas: Threaded.execute_callbacks?) ⇒ Documento

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Ejecutar desde_db.

Parámetros:

  • klass (Clase) -

    La clase a instanciar si _type no está presente.

  • atributos (Hash) (predeterminado: nulo)

    Los atributos del documento.

  • criterios (Criterios) (predeterminado: nulo)

    Objeto de criterios opcionales.

  • campos seleccionados (Hash) (predeterminado: nulo)

    Campos recuperados mediante #only. Si se especifica selected_fields, los campos que no figuran en él no serán accesibles en el documento devuelto.

  • ejecutar_devoluciones de llamadas (true | false) (predeterminado: Threaded.execute_callbacks?)

    Si este método debe invocar las devoluciones de llamada. Si es verdadero, se invocarán normalmente. Si es falso, se almacenarán en la lista pending_callbacks y el invocador será responsable de invocar run_pending_callbacks posteriormente. Use esta opción para aplazar la ejecución de la devolucion de llamada hasta que se construya todo el gráfico de objetos que contiene las asociaciones incrustadas.

Devuelve:



234
235
236
237
238
239
# Archivo 'lib/mongoid/factory.rb', línea 234

def execute_from_db(klass, atributos = nulo, criterios = nulo,
                    campos seleccionados = nulo,
                    ejecutar_devoluciones de llamada: Compacto.¿ejecutar_devoluciones de llamada?)
  Instanciador.Nuevo(klass, atributos, criterios, campos seleccionados)
              .instancia(ejecutar_devoluciones de llamada: ejecutar_devoluciones de llamadas)
end

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

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

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

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

  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 el criterio tiene una asociación de referencia (es decir, este documento se instancia como una asociación de otro documento), el otro documento también se completa en la asociación inversa del documento devuelto, si existe una.

Ejemplos:

Construir el documento.

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

Parámetros:

  • klass (Clase) -

    La clase a instanciar si _type no está presente.

  • atributos (Hash) (predeterminado: nulo)

    Los atributos del documento.

  • criterios (Criterios) (predeterminado: nulo)

    Objeto de criterios opcionales.

  • campos seleccionados (Hash) (predeterminado: nulo)

    Campos recuperados mediante #only. Si se especifica selected_fields, los campos que no figuran en él no serán accesibles en el documento devuelto.

Devuelve:



212
213
214
# Archivo 'lib/mongoid/factory.rb', línea 212

def desde_db(klass, atributos = nulo, criterios = nulo, campos seleccionados = nulo)
  execute_from_db(klass, atributos, criterios, campos seleccionados)
end