你会如何在RoR上创build一个像SO或Facebook一样的通知系统?

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

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

除了这个设置之外,我不确定如何根据应用程序中的某些事件触发创build通知。 我也有点不确定我需要如何设置路由 – 是它自己单独的资源还是嵌套在用户资源中? 如果有人可以扩展这个,我会觉得非常有帮助。

最后,阿贾克斯民意调查可能会改善这种function。

可能有一些我错过的东西,所以请填写这个,这是一个很好的一般资源。

所以总的要点是:

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

2)你可以有模型观察者 ,在那里你可以“观察”某些事件,比如创build一个新的评论。 这将是你的触发器。

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

通知表格可能如下所示:

sender_id:整数,receiver_id:整数,notifiable_id:整数,notifiable_type:string

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

  2. 为了触发特定事件的动作,请参考@mike提到的'Observers'