Clase: Mongoid::Association::Referenced::HasAndBelongsToMany::Binding

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Enlazable
Definido en:
lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb

Overview

Clase de enlace para todas las asociaciones has_and_belongs_to_many.

Resumen del atributo de la instancia

Atributos incluidos desde Vinculable

#_association, #_base, #_target

Resumen del método de instancia colapsar

Métodos incluidos de Bindable

#binding, #initialize

Detalles del método de instancia

#bind_one(doc) ⇒ Object

Vincula un único documento con la asociación inversa. Se utiliza específicamente al añadir al proxy.

Ejemplos:

Encaderna un documento.

person.preferences.bind_one(preference)

Parámetros:

  • doc (documento)

    El único documento a vincular.



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

def bind_one(doc)
  binding hacer
    reverse_keys = try_method(doc, _association.clave foránea inversa) a menos que doc.frozen?
    si reverse_keys
      record_id = inverse_record_id(doc)
      a menos que reverse_keys.incluir?(record_id)
        try_method(doc, _association.inverso_establecedor_de_claves_externas, reverse_keys.push(record_id))
      end
      doc.reset_relation_criteria(_association.inversa)
    end
    _base.sincronizar[_association.foreign_key] = true
    doc.sincronizar[_association.clave foránea inversa] = true
  end
end

#determine_inverse_association(doc) ⇒ Mongoid::Association::Relatable

Encuentra la asociación inversa dada un documento.

Parámetros:

  • doc (Mongoid::Document)

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

Devuelve:



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

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:

Devuelve:

  • (BSON::ObjectId)

    El id inverso.



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

def inverse_record_id(doc)
  si pk = _association.opciones[:inverse_primary_key]
    _base.enviar(pk)
  else
    asociación inversa = determine_inverse_association(doc)
    si asociación inversa
      _base.__send__(asociación inversa.clave_primaria)
    else
      _base._id
    end
  end
end

#unbind_one(doc) ⇒ Object

Desvincula un solo documento.

Ejemplos:

Desvincula el documento.

person.preferences.unbind_one(document)


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

def unbind_one(doc)
  binding hacer
    _base.enviar(_association.foreign_key).delete_one(record_id(doc))
    reverse_keys = try_method(doc, _association.clave foránea inversa) a menos que doc.frozen?
    si reverse_keys
      reverse_keys.delete_one(inverse_record_id(doc))
      doc.reset_relation_criteria(_association.inversa)
    end
    _base.sincronizar[_association.foreign_key] = true
    doc.sincronizar[_association.clave foránea inversa] = true
  end
end