Clase: Mongoid::Association::Referenced::BelongsTo::Binding

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

Overview

Clase de enlace para asociaciones belongs_to.

Resumen del atributo de la instancia

Atributos incluidos desde Bindable

#_association, #_base, #_target

Resumen del método de instancia colapsar

Métodos incluidos de Bindable

#binding, #initialize

Detalles del método de instancia

#bind_oneobjeto

Vincula el objeto base a la inversa de la asociación. Esto es para que seamos referenciados a los objetos reales en ambos lados.

Este caso establece la asociación tanto en el objeto inverso como en el propio documento.

Ejemplos:

Encuaderne los documentos.

game.person.bind(:continue => true)
game.person = Person.new


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# Archivo 'lib/mongoid/association/referenced/belongs_to/binding.rb', línea 22

def bind_one
  binding hacer
    check_polymorphic_inverses!(_objetivo)
    vincular_foreign_key(_base, record_id(_objetivo))

    # establecer el tipo inverso (por ejemplo, "#{name}_type") para nuevas asociaciones polimórficas
    si _association.inverse_type && !_base.frozen?
      llave = _association.resolver.default_key_for(_objetivo)
      bind_polymorphic_inverse_type(_base, llave)
    end

    si inversa = _association.inversa(_objetivo)
      si set_base_association
        si _base.referenced_many?
          _objetivo.__send__(inversa).push(_base)
        else
          eliminar_asociado(_objetivo)
          _objetivo.establecer_relación(inversa, _base)
        end
      end
    end
  end
end

#desvincular_unoObjeto

Desvincula el objeto base y el inverso, causado por establecer la referencia en nil.

Ejemplos:

Desvincula el documento.

game.person.unbind(:continue => true)
game.person = nil


52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Archivo 'lib/mongoid/association/referenced/belongs_to/binding.rb', línea 52

def unbind_one
  binding hacer
    inversa = _association.inversa(_objetivo)
    vincular_foreign_key(_base, nulo)
    bind_polymorphic_inverse_type(_base, nulo)
    si inversa
      set_base_association
      si _base.referenced_many?
        _objetivo.__send__(inversa).borrar(_base)
      else
        _objetivo.establecer_relación(inversa, nulo)
      end
    end
  end
end