25

HABTM 关系确实不支持该:dependent选项吗?

class Person < ActiveRecord::Base
  has_and_belongs_to_many :posts, :dependent => :destroy
end

我正在尝试rails edge。

4

3 回答 3

85

如果你想保持简单的has_and_belongs_to_many关联,你可以添加这个:

class Person < ActiveRecord::Base
  has_and_belongs_to_many :posts
  before_destroy { posts.clear }
end

这将清除所有条目的连接表person。注意:这只会从连接表中删除记录,它不会破坏posts(如果它是双向的,这是有意义的,has_and_belongs_to_many因为post可能会被 other 引用persons)。

Person但是从你的名字(和)猜测,Post我会假设你可能会逃脱 aPerson has_many :posts和 aPost belongs_to :person在这种情况下你可以使用关联:dependent => :destroy上的has_many

于 2012-02-09T07:06:26.533 回答
19

是的,它不支持它。请参阅文档。通常habtm仅适用于非常非常简单的情况,如果您开始需要更复杂的东西,您应该切换到has_many :through.

于 2010-05-10T00:41:58.073 回答
5

尝试这个:

class Person < ActiveRecord::Base
  has_and_belongs_to_many :posts
  before_destroy do
    posts.each { |post| post.destroy }
  end
end

你不需要posts.clear,因为Rails 4.2+ 已经处理了。

于 2017-06-10T03:15:00.107 回答