Clase: Mongoid::Asociación::Referenciado::Pertenece a::Enlace

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

Overview

Clase de enlace para asociaciones belong_to.

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_oneobjeto

Vincula el objeto base a la inversa de la asociación. Esto permite referenciar a los objetos reales en ambos lados.

Este caso establece la asociación en el objeto inverso así como en el documento mismo.

Ejemplos:

Encuadernar 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
    ¡comprueba las inversas polimórficas!(_objetivo)
    vincular_clave_externa(_base, ID de registro(_objetivo))

    # establece el tipo inverso (por ejemplo, "#{name}_type") para nuevas asociaciones polimórficas
    Si _asociación.inverse_type && !_base.frozen?
      clave = _asociación.resolver.clave_predeterminada_para(_objetivo)
      tipo inverso polimórfico de enlace(_base, clave)
    end

    Si inverso = _asociación.inverso(_objetivo)
      Si asociación_base_conjunto
        Si _base.¿referenciado_muchos?
          _objetivo.__enviar__(inverso).Push(_base)
        else
          eliminar_asociado(_objetivo)
          _objetivo.relación_de_conjunto(inverso, _base)
        end
      end
    end
  end
end

#desvincular_unoObjeto

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

Ejemplos:

Desvincular 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
    inverso = _asociación.inverso(_objetivo)
    vincular_clave_externa(_base, nulo)
    tipo inverso polimórfico de enlace(_base, nulo)
    Si inverso
      asociación_base_conjunto
      Si _base.¿referenciado_muchos?
        _objetivo.__enviar__(inverso).borrar(_base)
      else
        _objetivo.relación_de_conjunto(inverso, nulo)
      end
    end
  end
end