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