dependent => destroy on a “has_many through” association

前端 未结 3 1901
攒了一身酷
攒了一身酷 2020-12-08 01:56

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

So I have this...

class Comment < ActiveRecord::Base
  has_many :c         


        
相关标签:
3条回答
  • 2020-12-08 02:24

    The original poster's solution is valid, however I wanted to point out that this only works if you have an id column for that table. I prefer my many-to-many tables to only be the two foreign keys, but I had to remove my "id: false" from the migration table definition for cascading delete to work. Having this functionality definitely outweighs not having an id column on the table.

    0 讨论(0)
  • 2020-12-08 02:29

    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.

    0 讨论(0)
  • 2020-12-08 02:48

    If you have a polymorphic association, you should do what @blogofsongs said but with a foreign_key attribute like so:

    class User < ActiveRecord::Base
      has_many :activities , dependent: :destroy, foreign_key: :trackable_id
    end
    
    0 讨论(0)
提交回复
热议问题