2016-10-02 72 views
0

这里的问题是的ActionMailer模板存储在DB

“是不好的做法,存储在数据库电子邮件模板和渲染?”

我知道这是人们不适用。 (通常它是从.erb和良好的呈现去,它应该访问DB尽可能避免使用。)

但也有低于

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

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

所以我正在考虑在DB中存储模板并进行渲染,这样我就可以跟踪哪些电子邮件甚至发送了模板甚至更改。

对此有何建议?

回答

1

由于商业原因,我需要为每封电子邮件记录历史。 (谁被罚,什么标题和机构发送。)

您可以用下面的方法去:

  1. 创建DB支持AR模型,如EmailsHistory
  2. 创建的实例每次发送电子邮件时都会收到EmailsHistory

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

然后,在电子邮件发送只需添加一个行emails_history表,你需要有信息的所有列的时刻。

+0

谢谢!发送电子邮件时我也很担心I/O。如果你可以在应用你的想法时建议减少db的I/O的方法,那将是非常好的:)永远感谢你的答案! – Tosh

+0

@Toshi这不应该是一个数据库成本昂贵的设置,但如果你希望你可以使用Sidekiq来处理两者,发送电子邮件和写入数据库。您可以将逻辑包装到服务中并在后台处理 –

+0

我在考虑发送电子邮件的并行处理,因此如果我应用后端作业将会很复杂。所以我想我会去你的第一个建议:)谢谢! – Tosh