【发布时间】:2019-09-30 19:24:16
【问题描述】:
我正在寻找一种方法来传递参数以销毁记录哪个用户负责记录的销毁。
我使用的每个模型都有一个相应的历史记录表,每次保存记录时我都会在其中记录,记录上的所有参数,以及哪个用户调用它来保存它。我想确保在销毁记录时也这样做。
为了保存,我只是用save(user_id, source) 覆盖了save 方法,因为我不使用任何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
有什么建议吗?
【问题讨论】:
-
由于
ActiveRecord::Base的构造方式(例如,包括构建功能的模块),您应该能够调用super来调用destroy的原始版本。这应该保留所有的钩子;但是我从未真正尝试过 -
@engineersmnky 这是有道理的。你知道我如何通过回调将相同的参数传递给我想要销毁的子模型吗?
-
我不能说我曾经尝试过,但您是否考虑过使用已经支持此功能的库,例如
audited或papertrail -
我经常使用 papertrail,它非常好,完全可以(我认为)你想要的。
-
我不知道有这样的宝石,但它看起来几乎完美。
标签: ruby-on-rails activerecord callback