Rails: オブジェクト破棄時に関連付けられたレコードを削除する 質問する

Rails: オブジェクト破棄時に関連付けられたレコードを削除する 質問する

モデルは2つあります

 class Deal < ActiveRecord::Base
   has_many :couponizations, dependent: :destroy     
   has_many :coupon_codes, through: :couponizations, source: :coupon_code, dependent: :destroy
   accepts_nested_attributes_for :coupon_codes, allow_destroy: true
 end

そして

class CouponCode < ActiveRecord::Base
   has_one :couponization, dependent: :destroy
   has_one :deal, through: :couponization, source: :deal

多対多の関係でリンクされている

class Couponization < ActiveRecord::Base
   belongs_to :coupon_code
   belongs_to :deal
end

オプションを指定したにもかかわらずdependent: :destroy、取引を削除してもクーポン コードは削除されません。ただし、クーポンは正常に削除されます。オブジェクトを破棄するときに、関連するネストされたレコードを削除する方法はありますか?

ベストアンサー1

オプションは、 (参照)dependent: :destroyを使用する場合は無視されます。:throughドキュメント)。手動で行う必要があります。after_destroy 折り返し電話例えば。

 class Deal

   after_destroy :destroy_coupon_codes

   private

   def destroy_coupon_codes
     self.coupon_codes.destroy_all   
   end
 end

おすすめ記事