ruby-on-railsactiverecordhas-many-through

dependent => destroy on a "has_many through" association


Apparently dependent => destroy is ignored when also using the :through option.

So I have this...

class Comment < ActiveRecord::Base
  has_many :comment_users, :dependent => :destroy
  has_many :users, :through => :comment_users
  ...
end

...but deleting a Comment does not result in the associated comment_user records getting deleted.

What's the recommended approach, then, for cascade deletes when using :through?


Solution

  • Apparently :dependent is not ignored!

    The real issue was that I was calling Comment.delete(id) which goes straight to the db, whereas I now use Comment.destroy(id) which loads the Comment object and calls destroy() on it. This picks up the :dependent => :destroy and all is well.