【问题标题】:Best Practices in Rails 5 for calling ActionMailerRails 5 中调用 ActionMailer 的最佳实践
【发布时间】:2017-11-12 17:21:38
【问题描述】:

我正在构建一个 Rails 5 应用程序,它需要发送邀请和通知等电子邮件......

型号:Invite.rb, Notification.rb

对于应该在 Rails 应用程序中实现邮件 (.deliver) 的位置的当前建议/最佳实践是什么?

.deliver 是否应该与模型的回调(如 after_createafter_create)一起发生?

【问题讨论】:

  • 你也可以使用 after_save。但是在这里您需要确定记录是新记录还是现有记录。如果您只想在创建新记录后发送邮件。您可以在 after_create 中传递邮件。
  • 我应该在控制器中发送邮件吗?该模型?别的地方? Rails 的建议是什么?
  • 当我们在 Rails 中构建应用程序时,我只从模型中调用 MailSender.deliver。这是我看到 Rails 中最受关注的做法

标签: ruby-on-rails ruby ruby-on-rails-5 actionmailer


【解决方案1】:

不建议在 ActiveRecord 回调函数中传递邮件。这可能会导致更新记录时出现各种奇怪的情况,然后意外向用户发送电子邮件。

最佳位置取决于场景。

场景 1:当您的应用程序中的某个端点被命中时,会触发一封电子邮件。

解决方案:可以在控制器或service objectinteractor 中触发此事件,具体取决于哪个抽象有意义。此外,当这通过请求发生时,我们需要快速响应时间。建议在 ActionMailer 中使用deliver_later

场景 2:电子邮件通过 rake 任务或脚本触发

解决方法:可以直接在rake任务或者脚本里面放邮件

【讨论】:

    猜你喜欢
    • 2010-10-05
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    相关资源
    最近更新 更多