如何使用参数调用destroy?

时间:2019-05-13 19:51:37

标签: ruby-on-rails activerecord callback

我正在寻找一种方法来传递要销毁的参数,以记录哪个用户负责记录的销毁。

我使用的每个模型都有一个对应的历史记录表,每次保存记录时,我都会在其中记录日志,记录中的所有参数以及哪个用户要求保存该记录。我想确保销毁记录时也这样做。

为了保存,我只用save覆盖了save(user_id, source)方法,因为我没有使用任何before_save回调。使用destroy时,我想保留回调(has_many :submodel, dependent: destroy),同时仍然强制执行日志记录。

理想情况下,我可以输入以下内容:

def destroy(user_id, source)
    self.transaction do
        #destroy all associations, using same user_id and source
        self.log_descruction(user_id, source)
        #destroy self
    end
end

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您无需保留before_save。您不能使用before_destroy回叫

请参阅:https://guides.rubyonrails.org/active_record_callbacks.html#destroying-an-object

您只需在before_destroy资源之前调用一个方法。然后用这种方法保存日志。