:dependent
HABTM関係がオプションをサポートしていないというのは本当ですか?
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts, :dependent => :destroy
end
RailsEdgeを試しています。
:dependent
HABTM関係がオプションをサポートしていないというのは本当ですか?
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_many
post
persons
しかし、あなたの名前(Person
と)から推測すると、おそらくaとaでPost
逃げることができると思います。その場合は、関連付けでonを使用できます。Person has_many :posts
Post belongs_to :person
:dependent => :destroy
has_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を実行する必要はありません。