如何以编程方式在rails中运行before_destroy和其他Active记录挂钩

时间:2011-08-29 09:15:49

标签: ruby-on-rails-3 activerecord hook

我想覆盖destroy和destroy_all,以及rails中的delete和delete_all方法来完成软删除(将活动位设置为false),而不使用任何插件。我想在适当的情况下在这些操作中运行before_destroy过滤器。那么我怎么能以编程方式从rails代码运行before_destroy钩子和其他这样的钩子呢?作为一个附带问题,在尝试monkeypatch一个像destroy,destroy_all等的activerecord方法时,我应该注意哪些其他细节?

2 个答案:

答案 0 :(得分:2)

我认为你想要遵循艰难的方式:)也许像https://github.com/JackDanger/permanent_records这样的宝石可以帮助你解决问题。

答案 1 :(得分:0)

有一个类似的SO问题,其答案可能有所帮助:

My custom destroy method does not trigger the default before and after destroy callbacks

self.class.before_destroy_callback_chain和self.class.after_destroy_callback_chain可以给出要调用的方法列表。但不知道这是否是完整的答案。