我的应用程序有几个事件,用户可以根据这些事件收到电子邮件通知。从软件/数据库设计的角度来看,处理这个问题的最佳方法是什么?
以下是向用户发送电子邮件时的两个实例:
我还需要一种方法让用户在用户设置中单独关闭这些电子邮件事件。
以下是我正在考虑的事情(这不是一种好方法):
有没有更好的实用方法来处理这个问题?
答案 0 :(得分:3)
这被视为典型的用户设置,您可以将其另存为Rails json field或使用rails-settings 等宝石
因此,假设您使用rails-settings gem,您可以按照以下方式执行:
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
答案 1 :(得分:0)
我建议你观看Ryan Bates关于活动的Railscasts(ep。#406),然后阅读public-activity宝石。这可以是处理向用户发送通知的事件的优雅方式。
关于如何存储和处理偏好设置,请查看Preferences gem,如说明本身所示:...sometimes it's necessary if you want users to be able to disable things like e-mail notifications.
答案 2 :(得分:0)
我过去处理此问题的一种方法是为首选项和电子邮件类型设置单独的模型。首选项表用作用户和类型之间的多对多关系,可以设置自己的首选项。
这里的主要优点是您可以根据需要添加任意数量的电子邮件类型(随着时间的推移),您不会堵塞您的用户模型。