Módulo: Mongoid::Association::Depending

Ampliado por:
ActiveSupport::Concern
Incluido en:
Mongoid::Association
Definido en:
lib/mongoid/association/depending.rb

Overview

Este módulo define el comportamiento para configurar la eliminación en cascada y la anulación de las asociaciones, así como cómo delegar a la estrategia adecuada.

Resumen de constantes colapsar

STRATEGIES =

Las estrategias dependientes válidas.

%i[
  delete_all
  destruir
  anular
  restringir_con_excepción
  restringir_con_error
]

Resumen del método de clase colapsar

Resumen del método de instancia colapsar

Detalles del método de clase

.define_dependency!(association) ⇒ clase

Intenta agregar la información en cascada para el documento para saber cómo gestionar los documentos asociados en caso de eliminación.

Ejemplos:

Configura información en cascada

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

Parámetros:

Devuelve:

  • (clase)

    La clase del documento.



55
56
57
58
59
60
61
62
63
64
65
# Archivo 'lib/mongoid/association/depending.rb', línea 55

def sí mismo.define_dependency!(asociación)
  validate!(asociación)
  asociación.clase_inversa.tocar hacer |klass|
    si klass.solicitantes_propietario != klass
      klass.dependientes = []
      klass.solicitantes_propietario = klass
    end

    klass.dependientes.push(asociación) si asociación.dependiente && !klass.dependientes.incluir?(asociación)
  end
end

.validar!(asociación) ⇒ Objeto

Valida que la estrategia dependiente de una asociación esté dentro de la enumeración permitida.

Parámetros:

Aumenta:



75
76
77
78
79
80
81
# Archivo 'lib/mongoid/association/depending.rb', línea 75

def sí mismo.validate!(asociación)
  return si STRATEGIES.incluir?(asociación.dependiente)

  propagar Errors::InvalidDependentStrategy.Nuevo(asociación,
                                             asociación.dependiente,
                                             STRATEGIES)
end

Detalles del método de instancia

#apply_destroy_dependencies!objeto

Realice todas las eliminaciones en cascada, destrucciones o anulaciones. Se delegará en la estrategia adecuada para realizar la operación.

Ejemplos:

Ejecutar cascadas.

document.apply_destroy_dependencies!


88
89
90
91
92
93
94
# Archivo 'lib/mongoid/association/depending.rb', línea 88

def aplicar_destruir_dependencias!
  sí mismo.clase._all_dependents.cada hacer |asociación|
    si dependiente = asociación.intentar(:dependent)
      enviar("_dependent_#{dependent}!", asociación)
    end
  end
end