通知如何与Mailboxer gem一起使用?

时间:2014-08-06 04:01:09

标签: ruby-on-rails notifications mailboxer

我试图弄清楚如何使用Mailboxer设置通知系统。

我已经用它来设置站内消息系统,以便用户可以互相发送消息。现在,我想用它来发送来自网站的通知,通知用户他们的声誉点的变化或提醒他们必须完成的行动。像Facebook或Stackoverflow的下拉通知菜单。

例如,它可能包含以下类型的通知:

  • 用户获得执行操作的一些要点:
    • "You received 50 points for helping #{user.name} with #{request.title}.
  • 提醒用户必须执行操作:
    • "You must review #{user.name}'s help with #{request.title}!
    • 将链接到某个页面以完成该操作。
  • 用户收到他们发送的邮件的回复:
    • "You've received a message from #{sender.name}"
    • 将链接到该消息。

以下是一些细节:

  • 我不希望所有通知都发送电子邮件。大多数只需要在通知菜单中看到。 Mailboxer中是否有一个选项来控制通过电子邮件发送的内容,或者我是否必须绕过Mailboxer的邮件程序?

  • 我想在下拉列表中以不同方式格式化每种类型的通知。例如,为每个添加特定的glyphicon。我可以使用通知type字段(使用它来设置条件)吗? type如何运作?我是否可以将其设置为字符串,例如"信誉",具体取决于通知?

  • 可以将对象传递给notify方法。我对此的目的感到困惑。如何使用该对象?我想发送什么对象?


随意留下有关邮箱通知的一般信息,而不是专门回答所有内容。

我很难找到通知功能的文档,所以如果有了一些Mailboxer知识的人可能会对此感兴趣,那么我将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:9)

这是一个迟到的答案,但万一有人像我一样遇到这个问题,这就是我最终要做的事情。

用户身份方法定义为https://github.com/mailboxer/mailboxer#user-identities

如果它返回电子邮件,将发送电子邮件。如果它返回nil,则不会发送任何电子邮件。

邮箱中有一种通知方法,你可以用它来发送通知,

alice.notify("Hi","Bob has just viewed your profile!") 

在mailboxer_email中,检查对象是否是通知。如果是,请不要发送电子邮件。

def mailboxer_email(object)

    if object.class==Mailboxer::Notification
      return nil
    else
      email
    end
 end

您可以在此处定义更复杂的逻辑,例如为某些类型的用户禁用电子邮件等。