Módulo: Mongoid::Association::Accessors

Ampliado por:
ActiveSupport::Preocupación
Incluido en:
Mongoid::Asociación
Definido en:
lib/mongoid/association/accessors.rb

Overview

Este módulo contiene todo el comportamiento relacionado con el acceso a las asociaciones a través de los getters y setters, y cómo delegar a los constructores para crear otras nuevas.

Colapso del resumen del método de instancia

Detalles del método de instancia

#__build__(nombre, objeto, asociación, campos_seleccionados = nulo) ⇒ Proxy

Crea el documento relacionado y crea la asociación a menos que el documento sea nulo, en cuyo caso establece la asociación en este documento.

Ejemplos:

Construir la asociación.

person.__build__(:addresses, { :_id => 1 }, association)

Parámetros:

  • Nombre (Cadena | Símbolo)

    El nombre de la asociación.

  • Objeto (Hash | BSON::ObjectId)

    El id o atributos a utilizar.

  • asociación (Mongoid::Asociación::Relacionable)

    Los metadatos de la asociación.

  • 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 generado.

Devuelve:



27
28
29
30
# Archivo 'lib/mongoid/association/accessors.rb', línea 27

def __construir__(Nombre, Objeto, asociación, campos seleccionados = nulo)
  relación = crear_relación(Objeto, asociación, campos seleccionados)
  relación_de_conjunto(Nombre, relación)
end

#create_relation(objeto, asociación, campos_seleccionados = nulo) ⇒ Proxy

Crear una asociación a partir de un objeto y metadatos de asociación.

Ejemplos:

Crear la asociación.

person.create_relation(document, association)

Parámetros:

  • Objeto (Document | Array<Document>)

    El objetivo de la asociación.

  • asociación (Mongoid::Asociación::Relacionable)

    Los metadatos de la asociación.

  • 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 de asociación creado.

Devuelve:



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Archivo 'lib/mongoid/association/accessors.rb', línea 44

def crear_relación(Objeto, asociación, campos seleccionados = nulo)
  clave = @atributos[asociación.inverse_type]
  tipo = clave ? asociación.resolver.modelo_para(clave) : nulo
  destino = Si t = asociación.construir(yo, Objeto, tipo, campos seleccionados)
    asociación.crear_relación(yo, t)
  else
    nulo
  end

  # Solo es necesario hacer esto en asociaciones integradas. Las devoluciones de llamadas pendientes
  # solo se agregan al materializar los documentos, lo cual solo ocurre
  # sobre asociaciones incrustadas. No hay ninguna llamada a la base de datos en el
  #construcción de una asociación referenciada.
  Si asociación.¿incorporado?
    Arreglo(destino).cada hacer |doc|
      doc.intentar(:ejecutar devoluciones de llamadas pendientes)
    end
  end

  destino
end

#reset_relation_criteria(nombre) ⇒ Objeto

Restablece los criterios dentro del proxy de asociación. Se utiliza en asociaciones de varios a varios para mantener sincronizada la matriz de identificadores subyacente.

Ejemplos:

Restablecer los criterios de asociación.

person.reset_relation_criteria(:preferences)

Parámetros:

  • Nombre ( Símbolo) -

    El nombre de la asociación.



73
74
75
76
77
# Archivo 'lib/mongoid/association/accessors.rb', línea 73

def restablecer criterios de relación(Nombre)
  Si ¿variable_de_instancia_definida?("@_#{nombre}")
    Enviar(Nombre).reinicio_descargado
  end
end

#set_relation(nombre, relación) ⇒ Proxy

Establece la asociación proporcionada con una variable de instancia en la clase con el nombre proporcionado. Se usa como ayuda para mantener el código limpio.

Ejemplos:

Establecer el proxy en el documento.

person.set(:addresses, addresses)

Parámetros:

  • Nombre (Cadena | Símbolo)

    El nombre de la asociación.

  • relación (Apoderado)

    La asociación a establecer.

Devuelve:



89
90
91
# Archivo 'lib/mongoid/association/accessors.rb', línea 89

def relación_de_conjunto(Nombre, relación)
  conjunto_de_variables_de_instancia("@_#{nombre}", relación)
end