Módulo: Mongoid::Association::Referenced::AutoSave
- Estendido por:
- ActiveSupport::Concern
- Incluído em:
- Mongoid::Associação
- Definido em:
- lib/mongoid/association/referenced/auto_save.rb
Visão geral
Módulo Mixin incluído no Mongoid::Document que adiciona a capacidade de salvar automaticamente documentos do lado oposto em associações referenciadas ao salvar o documento do assunto.
Recolhimento do Resumo do método de classe
-
.define_autosave!(associação) ➤ Classe
Defina o método autosave na classe proprietário de uma associação para um objeto associado.
Recolhimento do Resumo do método de instância
-
#__auto salvando__ ➤ Objeto
Inicie o salvamento automático associado.
-
#salvo automaticamente? ➤ verdadeiro | false
Usado para evitar loops infinitos em salvamentos automáticos associados.
-
#change_for_autosave?(doc, seen = Set.new) ➤ true | false
Verifique se há alterações para o salvamento automático.
Detalhes do método de classe
.define_autosave!(associação) ➤ Classe
Defina o método autosave na classe proprietário de uma associação para um objeto associado.
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 62 def auto.define_autosave!(associação) associação.inverse_class.toque fazer |classe| save_method = :"autosave_documents_for_#{associação.name}" classe.enviar(:define_method, save_method) fazer se before_callback_handed? auto.before_callback_handed = false mais __auto save__ fazer se assoc_value = ivar(associação.name) Array(assoc_value).cada fazer |doc| próximo a menos que change_for_autosave?(doc) PC = doc.persistence_context? ? doc.persistence_context : persistence_context.for_child(doc) doc.com(PC) fazer |d| d.Salvar end end end end end end classe.after_persist_parent save_method, a menos que: :autosagravado? end end |
Detalhes do método de instância
#__autosaving__ ⇒ Object
Inicie o salvamento automático associado.
26 27 28 29 30 31 |
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 26 def __auto save__ Threaded.begin_autosave(auto) rendimento garantir Threaded.exit_autosave(auto) end |
#salvo automaticamente? ➤ verdadeiro | false
Usado para evitar loops infinitos em salvamentos automáticos associados.
18 19 20 |
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 18 def salvo automaticamente? Threaded.salvo automaticamente?(auto) end |
#change_for_autosave?(doc, seen = Set.new) ➤ verdadeiro | false
Verifique se há alterações para o salvamento automático. Retorna verdadeiro se o document for novo, alterado ou marcado para destruição, ou se qualquer filho referenciado na memória com salvamento automático: verdadeiro recursivamente satisfaz a mesma condição.
O conjunto seen evita a recursão infinita quando associações de autosave formam um ciclo (por exemplo, um requires_to com autosave: true cujo destino tem um has_many com autosave: true apontando para trás).
46 47 48 49 50 51 |
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 46 def change_for_autosave?(doc, visto = definir.Novo) Método false a menos que visto.add?(doc) doc.new_record? || doc.mudou? || doc.marcado_for_destruction? || autosave_children_changed?(doc, visto) end |