Clase: Mongoid::Asociación::Referenciado::TieneYPerteneceAMuchos::Enlace

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Enlazable
Definido en:
lib/mongoid/asociación/referenciado/tiene_y_pertenece_a_muchos/binding.rb

Overview

Clase vinculante para todas las asociaciones has_and_belongs_to_many.

Resumen de atributos de instancia

Atributos incluidos desde Bindable

#_association, #_base, #_target

Colapso del resumen del método de instancia

Métodos incluidos en Bindable

#enlace, #inicializar

Detalles del método de instancia

#bind_one(doc) ⇒ Objeto

Vincula un solo documento con la asociación inversa. Se usa específicamente al anexar al proxy.

Ejemplos:

Enlazar un documento.

person.preferences.bind_one(preference)

Parámetros:

  • doc (Documento) -

    El documento único a encuadernar.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 20

def bind_one(doc)
  binding hacer
    teclas inversas = método de prueba(doc, _asociación.clave externa inversa) a no ser que doc.frozen?
    Si teclas inversas
      ID de registro = id de registro inverso(doc)
      a no ser que teclas inversas.¿incluir?(ID de registro)
        método de prueba(doc, _asociación.definidor de clave externa inversa, teclas inversas.Push(ID de registro))
      end
      doc.restablecer criterios de relación(_asociación.inverso)
    end
    _base._sincronizado[_asociación.clave externa] = true
    doc._sincronizado[_asociación.clave externa inversa] = true
  end
end

#determinar_asociación_inversa(doc) ⇒ Mongoid::Asociación::Relacionable

Encuentra la asociación inversa dado un documento.

Parámetros:

  • doc (Mongoid::Documento)

    El documento para el cual se debe determinar la asociación inversa.

Devuelve:



77
78
79
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 77

def determine_inverse_association(doc)
  doc.relaciones[_base.clase.Nombre.desmodular.guion bajo.pluralizar]
end

#inverse_record_id(doc) ⇒ BSON::ObjectId

Encuentra el id inverso referenciado por inverse_keys

Parámetros:

  • doc (Mongoid::Documento)

    El documento para el cual se va a determinar la identificación inversa.

Devuelve:

  • (BSON::ObjectId)

    El id inverso.



58
59
60
61
62
63
64
65
66
67
68
69
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 58

def id de registro inverso(doc)
  Si pk = _asociación.opciones[:clave primaria inversa]
    _base.Enviar(pk)
  else
    asociación inversa = determine_inverse_association(doc)
    Si asociación inversa
      _base.__enviar__(asociación inversa.clave_primaria)
    else
      _base._id
    end
  end
end

#unbind_one(doc) ⇒ Object

Desvincular un solo documento.

Ejemplos:

Desvincular el documento.

person.preferences.unbind_one(document)


39
40
41
42
43
44
45
46
47
48
49
50
# Archivo 'lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb', línea 39

def unbind_one(doc)
  binding hacer
    _base.Enviar(_asociación.clave externa).delete_one(ID de registro(doc))
    teclas inversas = método de prueba(doc, _asociación.clave externa inversa) a no ser que doc.frozen?
    Si teclas inversas
      teclas inversas.delete_one(id de registro inverso(doc))
      doc.restablecer criterios de relación(_asociación.inverso)
    end
    _base._sincronizado[_asociación.clave externa] = true
    doc._sincronizado[_asociación.clave externa inversa] = true
  end
end