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

Recolhimento do Resumo do método de instância

Detalhes do método de classe

.define_autosave!(associação) ➤ Classe

Defina o método de salvamento automático na classe proprietário de uma associação para um objeto associado.

Exemplos:

Defina o método de salvamento automático:

Association::Referenced::Autosave.define_autosave!(association)

Parâmetros:

Retorna:

  • (Classe)

    A classe de proprietário da associação.



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 53

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|
              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.

Exemplos:

Begin autosave.

document.__autosaving__


28
29
30
31
32
33
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 28

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.

Exemplos:

O documento é salvo automaticamente?

document.autosaved?

Retorna:

  • (verdadeiro | falso)

    O documento já foi salvo automaticamente?



20
21
22
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 20

def salvo automaticamente?
  Threaded.salvo automaticamente?(auto)
end

#change_for_autosave?(doc) ➤ Booleano

Verificar se há alterações para o salvamento automático

document.changed_for_autosave?

Exemplos:

Retornar verdadeiro se houver alterações em si mesmo ou em

autosaved associations.

Retorna:



40
41
42
# File 'lib/mongoid/association/referenced/auto_save.rb', linha 40

def change_for_autosave?(doc)
  doc.new_record? || doc.mudou? || doc.marcado_for_destruction?
end