【问题标题】:Best practices to introduce trigger-like functionality in rails在 Rails 中引入类似触发器的功能的最佳实践
【发布时间】:2022-01-21 20:43:55
【问题描述】:

我想在我的 rails 应用程序中引入触发器。触发我的意思是,如果发生某个事件,则自动执行某些操作。例如,可以定义一个触发器,以便在下订单时发送电子邮件通知。

已经有很多应用程序提供了这个功能,例如查看这篇文章About triggers and how they work

我的问题是,在 Rails 中实现触发器的最佳做法是什么?内联与异步处理哪个更好?

非常感谢任何形式的帮助。谢谢

【问题讨论】:

    标签: ruby-on-rails activerecord triggers event-handling workflow


    【解决方案1】:

    您正在寻找的是 Rails 中的 ActiveJob

    当要应用触发器时,您将首先将作业排入队列 -> 然后通过 Worker 中的作业执行此触发器。

    例如:假设您想在创建帖子后立即通知管理员,因此您将继续执行以下操作:

    class Post < ApplicationRecord
      ...
      after_create :notify_admin
      ...
    
      private
        def notify_admin
          NotifyAdminJob.perform_later(id)
        end
    end
    

    这样,无论您的代码在NotifyAdminJob 中多么复杂或依赖时间,这都不会对您的模型执行(创建/更新)产生任何影响

    【讨论】:

    • 谢谢!答案。我知道 Rails 中的活跃工作,我意识到我的问题并不清楚。我实际上是在询问在 Rails 中实现应用程序级触发器的最佳实践。如果有任何有用的文章或与此相关的开源项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2023-03-16
    • 2011-08-23
    相关资源
    最近更新 更多