Módulo: Mongoid::Association::Referenced::Syncable

Incluido en:
Mongoid::Association
Definido en:
lib/mongoid/asociación/referenciado/sincronizable.rb

Overview

Este módulo gestiona el comportamiento para la sincronización de claves externas entre ambas partes de una asociación de muchos a muchos.

Definido bajo Namespace

Modules: ClassMethods

Resumen del método de instancia colapsar

Detalles del método de instancia

#_syncronizable?(association) ⇒ true | false

¿Es posible sincronizar el documento en el lado inverso? Esto es solo si la clave ha cambiado y los enlaces de asociación no se han ejecutado.

Ejemplos:

¿Son sincronizables las claves externas?

document._syncable?(association)

Parámetros:

Devuelve:

  • (true | false)

    Si podemos sincronizar.



21
22
23
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 21

def _syncable?(asociación)
  !sincronizar?(asociación.foreign_key) && enviar(asociación.foreign_key_check)
end

#_syncedHash

Obtén las claves externas sincronizadas.

Ejemplos:

Obtén las claves externas sincronizadas.

document._synced

Devuelve:

  • (encriptada)

    Las claves externas sincronizadas.



31
32
33
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 31

def _sincronizado
  @_synced ||= {}
end

#_sincronizado?(foreign_key) ⇒ verdadero | falso

¿Se ha sincronizado el documento para la clave foránea?

Ejemplos:

¿Se ha sincronizado el documento?

document._synced?

Parámetros:

  • foreign_key (string)

    La clave foránea.

Devuelve:

  • (true | false)

    Si podemos sincronizar.



43
44
45
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 43

def sincronizar?(foreign_key)
  !!_sincronizado[foreign_key]
end

#remove_inverse_keys(association) ⇒ Object

Actualiza las claves inversas al destruir.

Ejemplos:

Actualizar las claves inversas.

document.remove_inverse_keys(association)

Parámetros:

Devuelve:

  • (objeto)

    Los valores actualizados.



55
56
57
58
59
60
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 55

def remove_inverse_keys(asociación)
  foreign_keys = enviar(asociación.foreign_key)
  a menos que foreign_keys.nil? || foreign_keys.¿vacío?
    asociación.criterios(sí mismo, foreign_keys).tirar(asociación.clave foránea inversa => _id)
  end
end

#update_inverse_keys(asociación) ⇒ objeto

Actualizar las claves inversas para la relación.

Ejemplos:

Actualizar las claves inversas

document.update_inverse_keys(association)

Parámetros:

Devuelve:

  • (objeto)

    Los valores actualizados.



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 70

def update_inverse_keys(asociación)
  si previous_changes.has_key?(asociación.foreign_key)
    antiguo, Nuevo = previous_changes[asociación.foreign_key]
    agrega, subtítulos = Nuevo - (antiguo || []), (antiguo || []) - Nuevo

    # Si estamos guardando automáticamente, no queremos que se añada un duplicado - el
    # $addToSet se ejecutaría previamente y luego el $push y $each del
    # La inversión en el autoguardado causaría esto. Eliminamos cada ID de
    # ¿Qué hay en la memoria en caso de una combinación de adición de identificación y adición de objeto?
    # había ocurrido.
    si asociación.autosave?
      enviar(asociación.Nombre).en memoria.cada hacer |doc|
        agrega.delete_one(doc._id)
      end
    end

    a menos que agrega.¿vacío?
      asociación.criterios(sí mismo, agrega).sinOpciones.Añadir a conjunto(asociación.clave foránea inversa => _id)
    end
    a menos que subtítulos.¿vacío?
      asociación.criterios(sí mismo, subtítulos).sinOpciones.tirar(asociación.clave foránea inversa => _id)
    end
  end
end