Módulo: Mongoid::Association::Depending
- Ampliado por:
- ActiveSupport::Preocupación
- Incluido en:
- Mongoid::Asociación
- Definido en:
- lib/mongoid/asociación/dependiendo.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, :destruir, :anular, :restringir_con_excepción, :restringir_con_error ]
Colapso delresumen del método de clase
-
.define_dependency!(asociación) ⇒ Clase
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.
Colapso del resumen del método de instancia
-
#¡aplicar_destruir_dependencias! ⇒ Objeto
Realizar todas las eliminaciones, destrucciones o anulaciones en cascada.
Detalles del método de clase
.define_dependency!(asociación) ⇒ 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 yo.¡define_dependencia!(asociación) validate!(asociación) asociación.clase inversa.grifo 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 yo.validate!(asociación) a no ser 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! yo.clase._todos_los_dependientes.cada hacer |asociación| Si dependiente = asociación.intentar(:dependiente) Enviar("_dependiente_#{dependiente }!", asociación) end end end |