= Dependientes> destruyen en un “has_many través de” asociación
-
22-09-2019 - |
Pregunta
Al parecer dependiente => destruir cuando se ignora también el uso de la:. Través de la opción
Así que tengo esto ...
class Comment < ActiveRecord::Base
has_many :comment_users, :dependent => :destroy
has_many :users, :through => :comment_users
...
end
... pero la eliminación de un comentario no da lugar a los registros asociados comment_user ser eliminado.
¿Cuál es el enfoque que se recomienda, entonces, para eliminaciones en cascada cuando se utiliza: a través
Gracias
Solución
Al parecer: no dependiente se ignora
El verdadero problema era que yo estaba llamando Comment.delete(id)
que va directamente a la base de datos, mientras que ahora uso Comment.destroy(id)
que carga el objeto Comment y destruyen las llamadas () sobre ella. Este recoge el :dependent => :destroy
y todo está bien.
Otros consejos
La solución del cartel original es válida, sin embargo yo quería señalar que esto sólo funciona si tiene una columna de ID para esa tabla. Yo prefiero mis tablas muchos-a-muchos de ellos sólo sean las dos claves externas, pero tenía que quitar mi "id: falsa" de la definición de tabla de migración para eliminación en cascada a trabajar. Tener esta funcionalidad definitivamente no pesa más que tener una columna ID de la tabla.
Si usted tiene una asociación polimórfica, se debe hacer lo que dijeron @blogofsongs pero con un atributo foreign_key este modo:
class User < ActiveRecord::Base
has_many :activities , dependent: :destroy, foreign_key: :trackable_id
end