您如何在RoR中创建SO或Facebook等通知系统?

时间:2011-04-11 04:00:56

标签: ruby-on-rails ruby ruby-on-rails-3 notifications push-notification

我认为通知是它自己的资源,并且与用户模型有has_many, through关系,并且连接表表示关联。

具有很多通知的用户是显而易见的,然后通知会有很多用户,因为会有许多与许多用户关联的标准化通知(评论通知,后续通知等)。

除此设置外,我不确定如何根据应用程序中的某些事件触发通知的创建。我也不确定如何设置路由 - 它是自己独立的资源还是嵌套在用户资源中?如果有人可以对此进行扩展,我会发现它非常有用。

最后,ajax民意调查可能会改善这样的功能。

可能有一些我遗漏的东西,所以请填写它以便它是一个很好的一般资源。

2 个答案:

答案 0 :(得分:34)

所以一般要点:

1)通知是多态关联,因为评论可以有很多通知,用户可以有很多通知,“跟随”可以有很多通知等。

2)您可以拥有Model Observers,您可以在其中“观察”某些事件,例如创建新评论时。这将是你的触发器。

在路由方面,你真的不需要做任何超出常规的事情。您可能拥有的唯一路由是domain.com/notifications,其中显示所有通知。

通知表可能如下所示:

sender_id:integer,receiver_id:integer,notifiable_id:integer,notifiable_type:string

答案 1 :(得分:7)

  1. 对于通知系统,我个人更喜欢服务器推送技术。 Ryan Bates(Railscasts背后的声音)有great screen cast你可能想要观看

  2. 要触发针对特定事件的操作,请查看“观察员”,如提及@mike