tengo estos modelos
Modelo de la tabla vinculada:
y por supuesto el modelo de función pero esto es como usuario…
Ahora cuando hago lo siguiente en mis pruebas:
Me doy cuenta de que la devolución de llamada after_destroy no se llama. ¿Por qué es esto y cómo puedo evitarlo? Hay ciertos pasos que deben realizarse cada vez que se destruye una UserFunction...
Creo que esto tiene que ver con: https://github.com/rails/rails/issues/7618 (aunque estoy usando Rails 4.2.5). El after_create está funcionando perfectamente sin embargo...
Actualmente, Rails usa :delete_all como estrategia predeterminada de has_many_through. Solo llama :destroy_all
cuando especificamos explícitamente dependent: :destroy
en la asociación.
Los documentos mencionan consejos para usar has_many :through
si necesita devoluciones de llamada:
vea la sugerencia aquí: http://guides.rubyonrails.org/association_basics.html
Debe usar has_many :through si necesita validaciones, devoluciones de llamada
o atributos adicionales en el modelo de combinación.
Entonces, actualmente hay una inconsistencia entre after_create
cuál hace la devolución de llamada y after_destroy
.
Esto se menciona en estos dos números publicados en GitHub:
https://github.com/rails/rails/issues/7618
https://github.com/rails/rails/issues/27099
La solución por ahora es poner explícitamente :dependent => :destroy
la :through
parte. Esto asegurará que se utilice la devolución de llamada.
Para cualquiera que lea este 2021+
Cambia esto
A esto
0 Comentarios