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

Colapso del resumen del método de instancia

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.

Ejemplos:

Configurar información en cascada

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

Parámetros:

Devuelve:

  • (Clase) -

    La clase del documento.



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.

Parámetros:



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.

Ejemplos:

Ejecutar cascadas.

document.apply_destroy_dependencies!


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