我有一個has_one公司的模型用戶。公司可以有許多稅收和額外的費用。我正在使用ActiveRecord :: Observer記錄用戶在管理員的公司數據上完成的任何活動。爲此,我正在觀察用戶,公司,稅務和AdditionalFee模型。對於用戶在這些模型中對屬性所做的任何更改,我都會通過在另一個ActivityLog模型中創建記錄來記錄這些活動。 我的模型之間的關聯是 -如何防止ActiveRecord :: Observer記錄刪除從屬記錄,如果父記錄被刪除?
class User < ActiveRecord::Base
has_one: :company, dependent: :destroy
class Company < ActiveRecord::Base
belongs_to: :user
has_many: :taxes, dependent: :destroy
has_many: :additional_fees, dependent: :destroy
class Tax < ActiveRecord::Base
belongs_to: :company
class AdditionalFee < ActiveRecord::Base
belongs_to: :company
我的觀察如下:
class ActivityObserver < ActiveRecord::Observer
observe :user, :company, :tax, :additional_fee
當用戶或公司被刪除我現在面臨的問題是。 我在我的觀察者的回調中在after_destroy回調中創建了AcitivityLog模型中的記錄。
def after_destroy(obj)
ActivityLog.create(performer: 'user_name_here', target: 'record_destroyed(serialised object)', action: "destroy", description: "#user_name_here has deleted their company #company_name_here", change: "lot_variant")
end
我在ActivityLog創建記錄這樣在觀察模型中的每個記錄被刪除。
由於觀察者正在觀察所有關聯模型,因此當用戶或公司被刪除時,它將爲每個關聯記錄創建一個新條目。
有沒有辦法阻止觀察員記錄父母被銷燬時相關的銷燬記錄?我不希望在已記錄的從屬記錄的ActivityLog模型中創建新條目,但只想記錄銷燬的父記錄(公司或用戶)。