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

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top