问题
Is it true that HABTM relationships do not support the :dependent option?
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts, :dependent => :destroy
end
I am trying rails edge.
回答1:
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.
回答2:
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.
回答3:
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.
来源:https://stackoverflow.com/questions/2799746/habtm-relationship-does-not-support-dependent-option