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
-
.define_dependency!(association) ⇒ Class
Intenta agregar la información en cascada para el documento para saber cómo gestionar los documentos asociados en caso de eliminación.
-
.validate!(association) ⇒ Object
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
Intenta agregar la información en cascada para el documento para saber cómo gestionar los documentos asociados en caso de eliminación.
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.
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.
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 |