[英]Rails: Delete associated records on object destroy
我有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
選項,但當我刪除交易時,優惠券代碼不會被刪除。 但是優惠券刪除成功。 有沒有辦法在對象銷毀時刪除關聯的嵌套記錄?
我建議使用:after_destroy
回調,因此如果銷毀某些Deal
實例因任何原因失敗,您最終不會刪除其所有CouponCodes
。
這是一個應該有效的:after_destroy
示例:
after_destroy { |record|
CouponCode.destroy(record.coupon_codes.pluck(:id))
}
確保從Deals
模型中的has_many :couponizations
中刪除dependent: :destroy
,因為所有couponizations
現在都將被CouponCode
模型中的has_one :couponization, dependent: :destroy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.