Нужны рекомендации по созданию системы сообщений и сообщений на основе событий в Rails
Я хочу создать систему уведомлений и бейджей, основанную на событиях, которая будет награждать пользователей за достижение определенных целей. Цели могут включать в себя:
- Размещение 20 записей на форуме -> оповещение на главной странице с выделением пользователя, награждение значком
- Вход на сайт 10 дней подряд -> поздравляю с сообщением пользователю на главной странице
- Комментируя 10 сообщений на форуме -> награда за значок форума
Будет ли это работа для конечного автомата, такого как AASM? Я не много играл с такими системами. Это был бы способ определить события или есть лучшие плагины / решения, которые приспособили бы этот тип поведения? Любые учебники или рекомендации по подходу будет принята с благодарностью.
1 ответ
Кажется, что сложная часть здесь состоит в том, чтобы выяснить, как вы хотите поддерживать состояние, необходимое для определения, когда значок должен быть вручен. Плагины конечного автомата для рельсов не сильно вам в этом помогут.
Например, как кусок кода определит, выполнил ли пользователь 10 дней подряд? Как только вы поймете это, вы можете беспокоиться о том, как организовать обработку событий.
Вам нужно уведомить их в режиме реального времени, когда они получают значок? Если это так, то вы можете легко сделать это с ActiveRecord::Observer, но у него могут быть некоторые проблемы с задержкой в долгосрочной перспективе ( http://api.rubyonrails.org/classes/ActiveRecord/Observer.html)
Если вам не нужно делать это в реальном времени, вы можете сделать это с фоновыми заданиями какой-либо формы. Есть много библиотек для фоновых заданий. Я использую рабочую силу, когда меня не волнует масштабирование, и я просто хочу быстро что-то поднять.