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

Resumen del método de instancia colapsar

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.

Ejemplos:

Configura 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 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.

Parámetros:



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.

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!
  sí mismo.clase._todos_los_dependientes.cada hacer |asociación|
    si dependiente = asociación.intentar(:dependiente)
      enviar("_dependent_#{dependent}!", asociación)
    end
  end
end