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

后端 未结 2 1042
甜味超标
甜味超标 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:23

    I faced this issue as well, and came up with a solution that isn't pretty but works. Essentially, you'd just use a destroy_user that's similar to destroy_staff.

    class User < ActiveRecord::Base
      has_one: :staff
    
      after_destroy :destroy_staff
    
      def destroy_staff
        staff.destroy if staff && !staff.destroyed?
      end
    end
    
    class Staff < ActiveRecord::Base
      belongs_to :user
    
      after_destroy :destroy_user
    
      def destroy_user
        user.destroy if user && !user.destroyed?
      end
    end
    

提交回复
热议问题