我有一個Commentable類繼承自ActiveRecord :: Base和從Commentables繼承的Event類。覆蓋rails活動記錄銷燬has_and_belongs_to_many關係的意外刪除
我已經覆蓋了這兩個類中的destroy方法,並且Event.distroy調用了super。然而,一些意想不到的事情發生具體來說,事件的has_and_belongs_to_many關聯被刪除。我認爲這是因爲一些模塊被包含在Commentables和Event類之間,但不知道是否有辦法阻止它。
這裏的簡化代碼:
class Commentable < ActiveRecord::Base
has_many :comments
def destroy
comments.destroy_all
self.deleted = true
self.save!
end
end
class Event < Commentable
has_and_belongs_to_many :practitioners, :foreign_key => "commentable_id"
def destroy
#some Event specific code
super
end
end
我不想從數據庫中刪除的行,只是設置了「已刪除」標誌。我也不想刪除任何關聯。但是,在Event.destroy和Commentable.destroy之間的某處,其他一些rails代碼破壞了has_and_belongs_to_many表中的記錄。
任何想法爲什麼會發生這種情況,以及如何阻止它?