:dependentHABTM関係がオプションをサポートしていないというのは本当ですか?
class Person < ActiveRecord::Base
  has_and_belongs_to_many :posts, :dependent => :destroy
end
RailsEdgeを試しています。
:dependentHABTM関係がオプションをサポートしていないというのは本当ですか?
class Person < ActiveRecord::Base
  has_and_belongs_to_many :posts, :dependent => :destroy
end
RailsEdgeを試しています。
単純な関連付けを維持したい場合は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
うん、それはそれをサポートしていません。ドキュメントを参照してください。一般的にhabtmは、非常に単純な場合のみを対象としており、より複雑なものが必要になった場合は、に切り替える必要がありますhas_many :through。
これを試して:
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を実行する必要はありません。