开发者

habtm relationship does not support :dependent option

开发者 https://www.devze.com 2022-12-29 13:25 出处:网络
Is it true that HABTM relationships do not suppo开发者_StackOverflow中文版rt the :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.

0

精彩评论

暂无评论...
验证码 换一张
取 消