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

Incluido en:
Mongoid::Association
Definido en:
lib/mongoid/association/referenced/syncable.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 foráneas?

document._syncable?(association)

Parámetros:

Devuelve:

  • (true | false)

    Si podemos sincronizar.



18
19
20
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 18

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.



28
29
30
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 28

def sincronizar
  @_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.



40
41
42
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 40

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

#remove_inverse_keys(association) ⇒ Object

Actualiza las claves inversas al destruir.

Ejemplos:

Actualiza las claves inversas.

document.remove_inverse_keys(association)

Parámetros:

Devuelve:

  • (objeto)

    Los valores actualizados.



52
53
54
55
56
57
# Archivo 'lib/mongoid/association/referenced/syncable.rb', línea 52

def remove_inverse_keys(asociación)
  foreign_keys = enviar(asociación.foreign_key)
  return si foreign_keys.nil? || foreign_keys.¿vacío?

  asociación.criterios(sí mismo, foreign_keys).tirar(asociación.clave foránea inversa => _id)
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.



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

def update_inverse_keys(asociación)
  return a menos que 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
  # invertir en la función de autoguardado causaría esto. Borramos cada ID de
  # qué hay en la memoria en caso de una combinación de adición de id 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
  return si subtítulos.¿vacío?

  asociación.criterios(sí mismo, subtítulos).sinOpciones.tirar(asociación.clave foránea inversa => _id)
end