如何以编程方式在 Rails 中运行 before_destroy 和其他活动记录挂钩

发布于 12-01 18:57 字数 257 浏览 1 评论 0原文

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

I wan to override the destroy and the destroy_all, and the delete and the delete_all methods in rails to accomplish soft deletion (set active bit to false), without using any plugin for that. I want to run the before_destroy filter in these actions where appropriate. So how can i run the before_destroy hook, and other such hooks, programmatically from rails code? As a side question, what other detail should i be aware of when trying to monkeypatch an activerecord method like destroy, destroy_all etc?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁月流歌2024-12-08 18:57:22

I think you want to follow the hard way :) Maybe a gem like https://github.com/JackDanger/permanent_records could help you to solve your problem.

半透明的墙2024-12-08 18:57:22

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

我的自定义销毁方法不会触发默认的销毁前后回调

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

There is a similar SO question, whose answer might be of help:

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

self.class.before_destroy_callback_chain and the self.class.after_destroy_callback_chain can give the list of methods to call. but dont know if this is the complete answer or not.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文