through references rails many has_one has_many has_and_belongs_to_many has example belongs_to belongs and active ruby-on-rails activerecord has-many-through

ruby-on-rails - references - rails has_one through



dependiente=> destruir en una asociaciĆ³n "has_many through" (3)

Aparentemente: ¡no se ignora a los dependientes!

El problema real era que estaba llamando a Comment.delete(id) que va directamente a la base de datos, mientras que ahora uso Comment.destroy(id) que carga el objeto Comment y llama a destroy () en él. Esto recoge el :dependent => :destroy y todo está bien.

Aparentemente dependent => destroy se ignora cuando también se usa la opción: through.

Entonces tengo esto ...

class Comment < ActiveRecord::Base has_many :comment_users, :dependent => :destroy has_many :users, :through => :comment_users ... end

... pero al eliminar un comentario no se eliminan los registros de comment_user asociados.

¿Cuál es el enfoque recomendado, entonces, para eliminar en cascada al usar: a través de?

Gracias


La solución del póster original es válida, sin embargo, quería señalar que esto solo funciona si tiene una columna de identificación para esa tabla. Prefiero que mis tablas de muchos a muchos sean solo las dos claves foráneas, pero tuve que eliminar mi "id: falso" de la definición de la tabla de migración para conectar en cascada delete to work. Tener esta funcionalidad definitivamente compensa tener una columna de identificación en la mesa.


Si tiene una asociación polimórfica, debe hacer lo que dijo @blogofsongs pero con un atributo foreign_key como ese:

class User < ActiveRecord::Base has_many :activities , dependent: :destroy, foreign_key: :trackable_id end