2015-08-03 47 views
1

我的应用程序有几个事件的基础上,用户收到电子邮件通知。从软件/数据库设计角度处理这个问题的最佳方法是什么?如何在Rails应用程序中处理电子邮件通知?

这里有两种情况下,我就发封邮件给用户:

  1. 有人回复了自己的评论。
  2. 有人喜欢他们的评论。

我还需要一种方法让用户在用户设置中单独关闭这些电子邮件事件。

下面是我在想什么做的(不觉得自己是一个很好的方式):

  • 有一堆在user表中的布尔字段开启或关闭每个电子邮件通知(例如:is_send_email_replies,is_send_comment_likes)。
  • 用户可以在设置中打开或关闭这些布尔值。

有没有更好更实用的方法来处理这个问题?

回答

0

我建议你观看Ryan Bates的Railscasts活动(ep。#406),然后阅读public-activity gem。这可以是一种处理向用户发送通知的事件的优雅方式。

至于如何存储和处理的喜好,检查出Preferences gem作为描述本身说:...sometimes it's necessary if you want users to be able to disable things like e-mail notifications.

0

一,我已经在过去这样处理是有偏好的独立模型和电子邮件类型。首选项表充当用户和类型之间的多对多关系,他们可以在其中设置自己的偏好。

这里的主要优势是您可以随意添加尽可能多的电子邮件类型(随着时间的推移),而且您不会堵塞您的用户模型。

1

这被认为是一个典型的用户设置,你可以将其保存为Rails json field或使用的宝石一样rails-settings

因此,假如你使用的轨道,设置的宝石,你可以如下做到这一点:

class User < ActiveRecord::Base 
has_settings :email_notifications 
end 

然后你可以设置并获得像这样的设置

user.settings(:email_notifications).comments = true 
user.settings(:email_notifications).likes = false 
user.settings(:email_notifications).comments 
# => true