Is there a Rails 4 circular dependent: :destroy workaround?

后端 未结 2 1039
甜味超标
甜味超标 2021-02-13 19:42

As an example for the circular dependent: :destroy issue:

class User < ActiveRecord::Base
  has_one: :staff, dependent: :destroy
end

class Staff         


        
2条回答
  •  南笙
    南笙 (楼主)
    2021-02-13 20:09

    If one side of the cycle only has that one callback, you can replace one of the dependent: :destroy with dependent: :delete

    class User < ActiveRecord::Base
      # delete prevents Staff's :destroy callback from happening
      has_one: :staff, dependent: :delete
      has_many :other_things, dependent: :destroy
    end
    
    class Staff < ActiveRecord::Base
      # use :destroy here so that other_things are properly removed
      belongs_to :user, dependent: :destroy
    end
    

    Worked great for me, as long as one side doesn't need other callbacks to fire.

提交回复
热议问题