Как бы вы создали систему уведомлений, как на SO или Facebook в RoR? - PullRequest
44 голосов
/ 11 апреля 2011

Я думаю, что уведомления были бы его собственным ресурсом и имели бы отношение has_many, through с моделью пользователя с таблицей соединений, представляющей ассоциации.

Пользователь, имеющий много уведомлений, очевиден, а затемУведомление будет иметь много пользователей, потому что будет много стандартизированных уведомлений (уведомление о комментировании, следующее уведомление и т. д.), которые будут связаны со многими пользователями.

Помимо этой настройки, я не уверен, как вызватьсоздание уведомлений на основе определенных событий в вашем приложении.Я также немного не уверен в том, как мне нужно настроить маршрутизацию - это будет отдельный ресурс или вложенный в пользовательский ресурс?Мне было бы очень полезно, если бы кто-то мог расширить это.

Наконец, опрос ajax, вероятно, улучшит такую ​​функцию.

Возможно, что-то мне не хватает, поэтому, пожалуйста, заполнитетак что это хороший общий ресурс.

Ответы [ 2 ]

34 голосов
/ 11 апреля 2011

Итак, общая суть:

1) Уведомления будут представлять собой полиморфную ассоциацию, поскольку в комментариях может быть много уведомлений, у пользователей может быть много уведомлений, у «подписчиков» может быть много уведомлений и т. Д.

2) У вас может быть Model Observers , где вы можете «наблюдать» определенные события, например, при создании нового комментария. Это были бы ваши триггеры.

С точки зрения маршрутизации вам действительно не нужно ничего делать вне нормы. Единственная маршрутизация, которую вы можете иметь, - это domain.com/notifications, где отображаются все уведомления.

Таблица уведомлений может выглядеть следующим образом:

sender_id: целое число, получатель_ид: целое число, notifiable_id: целое число, notifiable_type: строка

7 голосов
/ 11 апреля 2011
  1. Для системы уведомлений я лично предпочитаю технологию push сервера. У Райана Бейтса (голос за Railscasts) есть отличный экран , который вы, возможно, захотите посмотреть

  2. Для запуска действий для определенного события, посмотрите на «Наблюдатели», как @mike упомянул

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...