habtm relationship does not support :dependent option
Is it true that HABTM relationships do not suppo开发者_StackOverflow中文版rt the :dependent
option?
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts, :dependent => :destroy
end
I am trying rails edge.
If you want to keep to the simple has_and_belongs_to_many
association, you could add this:
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts
before_destroy { posts.clear }
end
Which will clear the join table of all entries of that person
. Note: This only removes records from the join table, it does not destroy the posts
(which makes sense if it is a bi-direction has_and_belongs_to_many
because the post
might be referenced by other persons
).
But guessing from your names (Person
and Post
) I would assume that you can probably get away with a Person has_many :posts
and a Post belongs_to :person
in which case you can use the :dependent => :destroy
on the has_many
association.
Yep, It doesn't support it. See the docs. Generally habtm
is meant only for very very simple cases and if you start needing more complex things you should switch to has_many :through
.
Try this:
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts
before_destroy do
posts.each { |post| post.destroy }
end
end
You don't need to posts.clear as Rails 4.2+ handles this already.
精彩评论