Módulo: Mongoid::Association::Accessors

Ampliado por:
ActiveSupport::Concern
Incluido en:
Mongoid::Association
Definido en:
lib/mongoid/association/accessors.rb

Overview

Este módulo contiene todo el comportamiento relacionado con el acceso a las asociaciones mediante los métodos getter y setter, además de cómo delegar a los desarrolladores la creación de nuevas instancias.

Resumen del método de instancia colapsar

Detalles del método de instancia

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

Compila el documento relacionado y crea la asociación a menos que el documento sea nulo, entonces establece la asociación en este documento.

Ejemplos:

Compile la asociación.

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

Parámetros:

  • Nombre (String | Símbolo)

    El nombre de la asociación.

  • Objeto (Hash | BSON::ObjectId)

    El id o los atributos que se deben usar.

  • asociación (Mongoid::Association::Relatable)

    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:

  • (Proxy)

    La asociación.



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

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

#create_relation(objeto, association, selected_fields = nil) ⇒ Proxy

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

Ejemplos:

Crea la asociación.

person.create_relation(document, association)

Parámetros:

  • Objeto (Document | Array<Document>)

    El objetivo de la asociación.

  • asociación (Mongoid::Association::Relatable)

    Los metadatos de la asociación.

  • campos seleccionados (Hash) (predeterminado: nulo)

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

Devuelve:

  • (Proxy)

    La asociación.



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)
  llave = @atributos[asociación.inverse_type]
  tipo = llave ? asociación.resolver.modelo_para(llave) : nulo
  Objetivo = si t = asociación.compilar(sí mismo, Objeto, tipo, campos seleccionados)
    asociación.crear_relación(sí mismo, t)
  else
    nulo
  end

  # Solo es necesario hacer esto en asociaciones embebidas. Las funciones de retorno pendientes
  # sólo se añaden al materializar los documentos, lo que sólo ocurre
  # sobre asociaciones integradas. No hay ninguna llamada a la base de datos en el
  # construcción de una asociación referenciada.
  si asociación.¿Incorporado?
    Arreglo(Objetivo).cada hacer |doc|
      doc.intentar(:run_pending_callbacks)
    end
  end

  Objetivo
end

#reset_relation_criteria(nombre) ⇒ Objeto

Restablece los criterios dentro del proxy de asociación. Utilizado por asociaciones de muchos-a-muchos para mantener sincronizado el arreglo de IDs 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 reset_relation_criteria(Nombre)
  si instance_variable_defined?("@_#{name}")
    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:

Configura el proxy en el documento.

person.set(:addresses, addresses)

Parámetros:

  • Nombre (String | Símbolo)

    El nombre de la asociación.

  • relación (Proxy)

    La asociación a configurar.

Devuelve:

  • (Proxy)

    La asociación.



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

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