Подтвердить что ты не робот

Как бы вы создали систему уведомлений, например, на SO или Facebook в RoR?

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

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

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

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

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

4b9b3361

Ответ 1

Итак, общий смысл:

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

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

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

Таблица уведомлений может выглядеть так:

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

Ответ 2

  • Для системы уведомлений я лично предпочитаю технологию push-сервера. Райан Бэйтс (голос за Railscasts) имеет отличный скриншот, который вы можете посмотреть

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