2016-10-02 43 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