我想创建一个基于事件的通知和标记系统,当用户完成特定目标时会奖励他们。目标可能包括:
- 在论坛上发布 20 个条目 -> 在主页上突出显示用户的警报,获得徽章
- 连续 10 天登录网站 -> 恭喜在主页上向用户发送消息
- 评论 10 个论坛帖子 -> 论坛徽章奖
这对于像 AASM 这样的状态机来说是一项工作吗?我没有玩过这样的系统。那是定义事件的方法还是有更好的插件/解决方案可以适应这种行为?任何教程或方法建议将不胜感激。
我想创建一个基于事件的通知和标记系统,当用户完成特定目标时会奖励他们。目标可能包括:
这对于像 AASM 这样的状态机来说是一项工作吗?我没有玩过这样的系统。那是定义事件的方法还是有更好的插件/解决方案可以适应这种行为?任何教程或方法建议将不胜感激。
似乎这里的棘手部分是弄清楚您希望如何维持确定何时应该授予徽章所需的状态。rails 的状态机插件不会对您有太大帮助。
例如,一段代码如何确定用户是否连续 10 天登录?一旦弄清楚这一点,您就可以担心如何组织事件处理。
当他们获得徽章时,您需要实时通知他们吗?如果是这样,那么您可以使用 ActiveRecord::Observer 轻松完成此操作,但从长远来看,它可能存在一些延迟问题(http://api.rubyonrails.org/classes/ActiveRecord/Observer.html)
如果您不需要实时执行此操作,则可以使用某种形式的后台作业来执行此操作。有很多用于后台作业的库。当我不关心扩展并且只想快速获得一些东西时,我会使用工作。