显然依赖=>当使用:through选项时,将忽略destroy。
所以我有这个......
class Comment < ActiveRecord::Base
has_many :comment_users, :dependent => :destroy
has_many :users, :through => :comment_users
...
end
...但删除评论不会导致关联的comment_user记录被删除。
使用时,对于级联删除,推荐的方法是什么:通过?
由于
答案 0 :(得分:96)
显然:依赖不被忽视!
真正的问题是我正在调用Comment.delete(id)
直接进入数据库,而我现在使用Comment.destroy(id)
加载Comment对象并在其上调用destroy()。这会获得:dependent => :destroy
,一切都很顺利。
答案 1 :(得分:11)
原始海报的解决方案是有效的,但我想指出,只有当您拥有该表的id列时,这才有效。我更喜欢我的多对多表只是两个外键,但我不得不从迁移表定义中删除我的“id:false”,以便级联删除工作。拥有这个功能肯定胜过没有在表上的id列。
答案 2 :(得分:5)
如果你有一个多态关联,你应该做@blogofsongs所说的但是有一个foreign_key属性,如下所示:
class User < ActiveRecord::Base
has_many :activities , dependent: :destroy, foreign_key: :trackable_id
end