【问题标题】:The way to implement User Email Preferences?实现用户电子邮件首选项的方法?
【发布时间】:2013-04-02 16:46:21
【问题描述】:

我想实现一个功能,让每个用户决定他/她将收到的电子邮件类型。到目前为止,我只能看到用户在收到好友请求和收到新消息时收到电子邮件。我计划实现的方式如下:

  1. 每个用户has_one EmailPreference
  2. EmailPreferences 表将有 2 列:友谊(布尔)和消息(布尔)。
  3. 默认情况下,它们将为真。因此,用户将收到有关收到的新消息和新请求的电子邮件。
  4. 用户可以转到“编辑”操作并根据自己的选择更新值。
  5. 我计划使用if statement,它将在发送电子邮件方法之前检查@user.emailpreference.message?@user.emailpreference.friendship?

我想知道这是否是最好的方法。

【问题讨论】:

  • 符合您的要求吗?
  • 我猜,不确定它是否会起作用,或者是否有更简单的方法来解决它。

标签: ruby-on-rails email


【解决方案1】:

几个注意事项 - 我会质疑您是要执行 has_one 还是只是将列添加到用户。我也倾向于使用日期而不是布尔值,因此您可以看到布尔值的设置时间。对于命名,请考虑“友谊”和“信息”以外的其他内容。如果它是用户的属性,我会考虑类似“subscribed_to_friendships”和“subscribed_to_messages”。

我通常避免使用 has_one 的原因是进行非常简单的查询并减少维护需求。您可能会得到所有应该收到消息并循环访问它们的用户,我更喜欢避免加入并保持简单。我也不太喜欢孩子身上的 false 和 null 是多么的相同。这将帮助您避免删除/添加首选项记录,尤其是在默认设置为 true 并且您将在默认情况下为大多数用户创建首选项时。

【讨论】:

    【解决方案2】:

    我看到该方法的一个问题是,如果明天您有更多类型作为首选项,这意味着当有人加入而不是您想要发送电子邮件时,在这种情况下,您必须再添加一列。为什么不进一步规范化它并使用更多表来存储 Preference 类型

                 Id Name
                 1  Friendship
                 2  Message
    
                 Id  User Id Flag
                 1      1     TRUE
                 2      1     False
    

    这意味着用户 1 选择了友谊,但没有选择消息。现在您可以轻松添加任何新的偏好。

    【讨论】:

      【解决方案3】:

      https://stackoverflow.com/users/177489/swards 的方法对我来说是最好的选择,因为 has_one 查询以后可能会一团糟。 向用户模型和 gg 添加列!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多