Módulo: Mongoid::Association::Depending

Estendido por:
ActiveSupport::Concern
Incluído em:
Mongoid::Associação
Definido em:
lib/mongoid/association/depending.rb

Visão geral

Este módulo define o comportamento para configurar exclusões em cascata e anula para associações e como delegar à estratégia apropriada.

Colapsode resumo constante

STRATEGIES =

As estratégias dependentes válidas.

%i[
  delete_all
  destruir
  anular
  restringir_com_exceção
  restringir_with_error
]

Recolhimento do Resumo do método de classe

Recolhimento do Resumo do método de instância

Detalhes do método de classe

.define_dependency!(associação) ➤ Classe

Tente adicionar as informações em cascata ao documento para saber como lidar com documentos associados em uma remoção.

Exemplos:

Configurar informações em cascata

Mongoid::Association::Depending.define_dependency!(association)

Parâmetros:

Retorna:

  • (Classe)

    A classe do documento.



55
56
57
58
59
60
61
62
63
64
65
# Arquivo 'lib/mongoid/association/depending.rb', linha 55

def auto.define_dependency!(associação)
  validar!(associação)
  associação.inverse_class.toque fazer |classe|
    se classe.dependentes_dono != classe
      classe.dependentes = []
      classe.dependentes_dono = classe
    end

    classe.dependentes.push(associação) se associação.dependente && !classe.dependentes.incluir?(associação)
  end
end

.validar!(associação) 3 Objeto

Valida que a estratégia dependente de uma associação está dentro da enumeração permitida.

Parâmetros:

Aumenta:



75
76
77
78
79
80
81
# Arquivo 'lib/mongoid/association/depending.rb', linha 75

def auto.validar!(associação)
  Método se Estratégias.incluir?(associação.dependente)

  aumentar Errors::InvalidDependentStrategy.Novo(associação,
                                             associação.dependente,
                                             Estratégias)
end

Detalhes do método de instância

#apply_destroy_dependencies!Objeto

Executar todas as exclusões, destruição ou anulação em cascata. Delegará à estratégia apropriada para executar a operação.

Exemplos:

Executar cascatas.

document.apply_destroy_dependencies!


88
89
90
91
92
93
94
# Arquivo 'lib/mongoid/association/depending.rb', linha 88

def apply_destroy_dependencies!
  auto.classe._all_dependen.cada fazer |associação|
    se dependente = associação.tentar(:dependen)
      enviar("_depende_#{dependente}!", associação)
    end
  end
end