我有一个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模型中创建新条目,但只想记录销毁的父记录(公司或用户)。