依赖=>摧毁一个“has_many通过”关联
当使用:through选项时,显然依赖=> destroy将被忽略。
所以我有这个…
class Comment < ActiveRecord::Base has_many :comment_users, :dependent => :destroy has_many :users, :through => :comment_users ... end
…但删除评论不会导致关联的comment_userlogging被删除。
那么推荐的方法是什么,然后,使用时:级联删除:通过?
谢谢
显然:依赖不被忽视!
真正的问题是,我打电话给Comment.delete(id)
,直接到数据库,而我现在使用Comment.destroy(id)
加载Comment对象,并调用destroy()。 这拿起:dependent => :destroy
,一切都很好。
原始的海报的解决scheme是有效的,但是我想指出,这只适用于,如果你有一个该表的ID列。 我更喜欢我的多对多的表只能是两个外键,但我不得不从迁移表定义中删除我的“id:false”级联删除工作。 拥有这个function绝对胜过不在桌子上有一个id列。
如果你有一个多态关联,你应该做@blogofsongs所说的,但是用一个foreign_key属性如下:
class User < ActiveRecord::Base has_many :activities , dependent: :destroy, foreign_key: :trackable_id end