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 eliminaciones y anulaciones en cascada para asociaciones, y cómo delegar a la estrategia adecuada.
Colapso delresumen constante
- STRATEGIES =
Las estrategias dependientes válidas.
[ :borrar_todo, :destroy, anular, :restricción_con_excepción, :restringir_con_error ]
Resumen del método de clase colapsar
-
.define_dependency!(association) ⇒ Class
Intente agregar la información en cascada para que el documento sepa cómo manejar los documentos asociados en caso de eliminación.
-
.validar!(asociación) ⇒ Objeto
Valida que la estrategia dependiente de una asociación esté dentro de la enumeración permitida.
Resumen del método de instancia colapsar
-
#apply_destroy_dependencies! ⇒ Objeto
Realiza todos los borrados en cascada, destrucciones o anulaciones.
Detalles del método de clase
.define_dependency!(association) ⇒ clase
Intente agregar la información en cascada para que el documento sepa cómo manejar los documentos asociados en caso de eliminación.
57 58 59 60 61 62 63 64 65 66 67 68 69 |
# Archivo 'lib/mongoid/association/depending.rb', línea 57 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 si asociación.dependiente && !klass.dependientes.incluir?(asociación) klass.dependientes.push(asociación) end end end |
.validar!(asociación) ⇒ Objeto
Valida que la estrategia dependiente de una asociación esté dentro de la enumeración permitida.
79 80 81 82 83 84 85 |
# Archivo 'lib/mongoid/association/depending.rb', línea 79 def sí mismo.validate!(asociación) a menos que STRATEGIES.incluir?(asociación.dependiente) propagar Errors::Estrategia dependiente no válida.Nuevo(asociación, asociación.dependiente, STRATEGIES) end end |
Detalles del método de instancia
#¡aplicar_destruir_dependencias! ⇒ Objeto
Realizar todas las eliminaciones, destrucciones o anulaciones en cascada. Se delegará en la estrategia adecuada para realizar la operación.
92 93 94 95 96 97 98 |
# Archivo 'lib/mongoid/association/depending.rb', línea 92 def aplicar_destruir_dependencias! sí mismo.clase._todos_los_dependientes.cada hacer |asociación| si dependiente = asociación.intentar(:dependiente) enviar("_dependent_#{dependent}!", asociación) end end end |