25

:dependentHABTM関係がオプションをサポートしていないというのは本当ですか?

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

RailsEdgeを試しています。

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_manypostpersons

しかし、あなたの名前(Personと)から推測すると、おそらくaとaでPost逃げることができると思います。その場合は、関連付けでonを使用できます。Person has_many :postsPost belongs_to :person:dependent => :destroyhas_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

Rails 4.2+はすでにこれを処理しているため、posts.clearを実行する必要はありません。

于 2017-06-10T03:15:00.107 に答える