【问题标题】:ActionMailer Template stored in DB存储在数据库中的 ActionMailer 模板
【发布时间】:2016-10-02 06:13:22
【问题描述】:

这里的问题是

“将电子邮件模板存储在数据库中并进行渲染是不好的做法吗?”

我知道这是人们不适用的。 (一般是从.erb渲染出来的,很好用,应该尽量避免访问DB。)

但下面有业务需求

  • 出于业务原因,我需要了解每封电子邮件的历史记录。 (发送了谁,发送了什么标题和正文。)

Third Party Transaction Email 服务商可以存储历史,但我需要本地存储。

所以我正在考虑将模板存储在数据库中并渲染它,这样即使模板发生更改,我也可以跟踪发送的电子邮件。

对此有何建议?

【问题讨论】:

    标签: ruby-on-rails email actionmailer


    【解决方案1】:

    出于业务原因,我需要了解每封电子邮件的历史记录。 (发送了谁,发送了什么标题和正文。)

    您可以采用以下方法:

    1. 创建由 db 支持的 AR 模型,例如 EmailsHistory
    2. 每次发送电子邮件时创建EmailsHistory 的实例。

    ## Columns:
    #  * title
    #  * recipient
    #  * body
    #  * anything else
    #
    class EmailsHistory
    end
    

    然后,在发送电子邮件时,只需在 emails_history 表中添加一行,其中包含您需要了解的所有列。

    【讨论】:

    • 谢谢!发送电子邮件时,我也不太担心 I/O。如果您能在应用您的想法时提出减少 db 的 I/O 的方法,那就太好了:) 永远感谢您的回答!
    • @Toshi 这不应该是一个耗费 db 的设置,但如果你愿意,你可以使用 Sidekiq 来处理这两者,发送电子邮件和写入 db。您可以将逻辑包装到服务中并在后台处理它
    • 我正在考虑并行处理发送电子邮件,所以如果我申请后端工作会很复杂。所以我想我会采纳你的第一个建议 :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多