blo*_*ngs 48 activerecord ruby-on-rails has-many-through
当使用:through选项时,显然依赖=> destroy被忽略.
所以我有这个......
class Comment < ActiveRecord::Base
has_many :comment_users, :dependent => :destroy
has_many :users, :through => :comment_users
...
end
Run Code Online (Sandbox Code Playgroud)
...但删除评论不会导致关联的comment_user记录被删除.
那么,当使用时,对于级联删除,推荐的方法是什么:通过?
谢谢
blo*_*ngs 96
显然:依赖不被忽视!
真正的问题是我正在调用Comment.delete(id)直接进入数据库,而我现在使用Comment.destroy(id)它加载Comment对象并在其上调用destroy().这:dependent => :destroy一切都很好.
dro*_*sis 11
原始海报的解决方案是有效的,但我想指出,只有当您拥有该表的id列时,这才有效.我更喜欢我的多对多表只是两个外键,但我不得不从迁移表定义中删除我的"id:false",以便级联删除工作.拥有此功能肯定胜过没有在表上的id列.
如果你有一个多态关联,你应该做@blogofsongs所说的但是有一个foreign_key属性,如下所示:
class User < ActiveRecord::Base
has_many :activities , dependent: :destroy, foreign_key: :trackable_id
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35497 次 |
| 最近记录: |