删除模型后如何删除关联

时间:2011-11-13 01:46:14

标签: ruby-on-rails activerecord

这可能很简单,但我不太清楚如何实现它。我有活动和用户,他们也加入了HABTM。当用户被删除时,我希望删除他们与事件的所有关联。此外,删除事件时,我希望删除与该事件的所有用户关联。 (不是用户自己而只是关联)谢谢!这是我的联想:

事件:

  has_and_belongs_to_many :users, :uniq => true

用户:

  has_and_belongs_to_many :events, :uniq => true

2 个答案:

答案 0 :(得分:0)

您应首先删除子元素,然后移至父元素。您必须在两个场景中执行此操作。

原因;删除该父键后,您将孤立子项,并且将无法再访问它们。

祝你好运,并希望这有助于一些人。

答案 1 :(得分:0)

尝试:dependents => :破坏。祝你好运。

has_and_belongs_to_many :events, :uniq => true, :dependents => :destroy

可能是另一项要求,请参阅文档中的更多内容。

您也可以尝试my_object.my_dependents.destroy_all。但考虑到HABTM关系,这可能导致一切都被删除,如果它们全部捆绑在一起,只是看起来有点粗略,特别是如果它是双向的。

来自文档和链接的说明: 选择构建多对多关系的方式并不总是很简单。如果您需要将关系模型作为自己的实体使用,请使用has_many:through。在使用旧模式时或者从不直接使用关系本身时,请使用has_and_belongs_to_many。

链接阅读更多内容:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html