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.

[
    :delete_all,
    :destroy,
    :nullify,
    :restrict_with_exceção,
    :restrict_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.



57
58
59
60
61
62
63
64
65
66
67
68
69
# Arquivo 'lib/mongoid/association/depending.rb', linha 57

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

    se associação.dependente && !classe.dependentes.incluir?(associação)
      classe.dependentes.push(associação)
    end
  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:



79
80
81
82
83
84
85
# Arquivo 'lib/mongoid/association/depending.rb', linha 79

def auto.validar!(associação)
  a menos que Estratégias.incluir?(associação.dependente)
    aumentar Errors::InvalidDependentStrategy.Novo(associação,
                                               associação.dependente,
                                               Estratégias)
  end
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!


92
93
94
95
96
97
98
# Arquivo 'lib/mongoid/association/depending.rb', linha 92

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