Rails 3: стратегия для системных уведомлений - PullRequest
5 голосов
/ 29 января 2012

Это распространенный шаблон среди приложений, и я уверен, что у него есть изящное решение, но я не могу найти ответ.Большая проблема в том, что я не знаю, как это назвать!

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

Это обычное явление при выполнении уведомлений о техническом обслуживании, новых функциях, подключении и т. Д.

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

1 Ответ

2 голосов
/ 09 февраля 2012

См. мой ответ на аналогичный вопрос.

Сообщения живут в моей пользовательской модели в виде сериализованного массива.Таким образом, я могу использовать простые методы массива, такие как #push для новых сообщений.Пользователи имеют дело только с определенными для них сообщениями, используя #delete_at для отмены отдельных сообщений или #clear для отмены их всех.

Для широковещательных уведомлений вы можете сделать что-то столь же неприятное, как:

User.all.map {|x| x.messages.push "You have been notified." ; x.save }

, который, если используется нечасто, не так уж и важен.

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