ActionMailer模板存储在DB中

时间:2016-10-02 06:13:22

标签: ruby-on-rails email actionmailer

这里的问题是

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

我知道这是人们不适用的。 (通常它是从.erb呈现的,并且很好,并且应尽可能避免访问数据库。)

但下面有业务要求

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

第三方交易电子邮件服务提供商可以存储历史记录,但我需要将它们存储在本地。

所以我考虑在DB中存储模板并进行渲染,以便我可以跟踪发送的电子邮件,甚至模板也会更改。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

  

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

您可以采用以下方法:

  1. 创建支持db的AR模型,如EmailsHistory
  2. 每次发送电子邮件时都会创建EmailsHistory的实例。
  3. ## Columns:
    #  * title
    #  * recipient
    #  * body
    #  * anything else
    #
    class EmailsHistory
    end
    

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