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

Jus*_*zer 44 ruby notifications ruby-on-rails push-notification ruby-on-rails-3

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

具有许多通知的用户是显而易见的,然后通知将具有许多用户,因为将存在与许多用户相关联的多个标准化通知(评论通知,后续通知等).

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

最后,ajax轮询可能会改善这样的功能.

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

Mik*_*wis 34

一般要点:

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

2)您可以拥有模型观察者,您可以在其中"观察"某些事件,例如创建新评论时.这将是你的触发器.

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

通知表可能如下所示:

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

  • 只是想指出观察者已被删除,并且在Rails 4中不再可用.我仍然使用Rails 3,但不想使用Observers,因此升级更容易.这是另一篇关于替代品的帖子http://stackoverflow.com/questions/15165260/rails-observer-alternatives-for-4-0 (2认同)

sam*_*207 7

  1. 对于通知系统,我个人更喜欢服务器推送技术.Ryan Bates(Railscasts背后的声音)有一个很棒的屏幕演员你可能想看

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