在 Rails 中引入类似触发器的功能的最佳实践
Posted
技术标签:
【中文标题】在 Rails 中引入类似触发器的功能的最佳实践【英文标题】:Best practices to introduce trigger-like functionality in rails 【发布时间】:2022-01-21 20:43:55 【问题描述】:我想在我的 rails 应用程序中引入触发器。触发我的意思是,如果发生某个事件,则自动执行某些操作。例如,可以定义一个触发器,以便在下订单时发送电子邮件通知。
已经有很多应用程序提供了这个功能,例如查看这篇文章About triggers and how they work。
我的问题是,在 Rails 中实现触发器的最佳做法是什么?内联与异步处理哪个更好?
非常感谢任何形式的帮助。谢谢
【问题讨论】:
【参考方案1】:您正在寻找的是 Rails 中的 ActiveJob。
当要应用触发器时,您将首先将作业排入队列 -> 然后通过 Worker 中的作业执行此触发器。
例如:假设您想在创建帖子后立即通知管理员,因此您将继续执行以下操作:
class Post < ApplicationRecord
...
after_create :notify_admin
...
private
def notify_admin
NotifyAdminJob.perform_later(id)
end
end
这样,无论您的代码在NotifyAdminJob
中多么复杂或依赖时间,这都不会对您的模型执行(创建/更新)产生任何影响
【讨论】:
谢谢!答案。我知道 Rails 中的活跃工作,我意识到我的问题并不清楚。我实际上是在询问在 Rails 中实现应用程序级触发器的最佳实践。如果有任何有用的文章或与此相关的开源项目。以上是关于在 Rails 中引入类似触发器的功能的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章