Módulo: Mongoid::Association::Referenced::Syncable
- Incluído em:
- Mongoid::Associação
- Definido em:
- lib/mongoid/association/referenced/syncable.rb
Visão geral
Este módulo lida com o comportamento da sincronização de chaves estrangeiras entre ambos os lados de associações de muitos para muitos.
Definido sob namespace
Módulos: Métodos de classe
Recolhimento do Resumo do método de instância
-
#_syncable?(associação) ➤ true | false
O documento pode ser sincronizado no lado inverso? Isso ocorre somente se a chave tiver sido alterada e as vinculações de associação não tiverem sido executadas.
-
#_synced ➤ Hash
Obtenha as chaves estrangeiras sincronizadas.
-
#_synced?(foreign_key) ➤ true | false
O documento foi sincronizado para a chave estrangeira?
-
#remove_inverse_keys(association) ➤ Object
Atualize as chaves inversas ao destruir.
-
#update_inverse_keys(association) ➤ Object
Atualize as chaves inversas para a associação.
Detalhes do método de instância
#_syncable?(associação) ➤ true | false
O documento pode ser sincronizado no lado inverso? Isso ocorre somente se a chave tiver sido alterada e as vinculações de associação não tiverem sido executadas.
21 22 23 |
# File 'lib/mongoid/association/referenced/syncable.rb', linha 21 def _syncable?(associação) !_synced?(associação.foreign_key) && enviar(associação.foreign_key_check) end |
#_synced ➤ Hash
Obtenha as chaves estrangeiras sincronizadas.
31 32 33 |
# File 'lib/mongoid/association/referenced/syncable.rb', linha 31 def _synced @_synced ||= {} end |
#_synced?(foreign_key) ➤ true | false
O documento foi sincronizado para a chave estrangeira?
43 44 45 |
# File 'lib/mongoid/association/referenced/syncable.rb', linha 43 def _synced?(foreign_key) !!_synced[foreign_key] end |
#remove_inverse_keys(association) ➤ Object
Atualize as chaves inversas ao destruir.
55 56 57 58 59 60 |
# File 'lib/mongoid/association/referenced/syncable.rb', linha 55 def remove_inverse_keys(associação) foreign_keys = enviar(associação.foreign_key) a menos que foreign_keys.nada? || foreign_keys.vazio? associação.critério(auto, foreign_keys).pull(associação.inverse_foreign_key => _id) end end |
#update_inverse_keys(association) ➤ Object
Atualize as chaves inversas para a associação.
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/mongoid/association/referenced/syncable.rb', linha 70 def update_inverse_keys(associação) se Previous_changes.has_key?(associação.foreign_key) antigo, Novo = Previous_changes[associação.foreign_key] adiciona, subs = Novo - (antigo || []), (antigo || []) - Novo # Se estivermos salvando automaticamente, não queremos que uma duplicata seja adicionada - o # $addToSet seria executado anteriormente e, em seguida, $push e $each do # inverso no salvamento automático causaria isso. Excluímos cada ID de # o que há na memória caso seja uma mistura de adição de ID e adição de objeto # ocorreu. se associação.autosave? enviar(associação.name).in_memory.cada fazer |doc| adiciona.delete_one(doc._id) end end a menos que adiciona.vazio? associação.critério(auto, adiciona)..add_to_set(associação.inverse_foreign_key => _id) end a menos que subs.vazio? associação.critério(auto, subs)..pull(associação.inverse_foreign_key => _id) end end end |