用于跟踪Rails上的用户活动的通知系统

我正在开发一个基于事件触发器生成通知的gem。 例如,在CMS中,如果创建了文章,则将生成通知“由用户y创建的文章x”。 (像Github / Facebook通知)。

在我的gem中,我有一个has_notifications方法,当在模型中指定时,它会注册回调 。

问题当然是,当触发回调时,调用gem中的相应操作,但是此操作将需要执行该操作的用户的用户id来生成通知。

我看向acts_as_audited和paper_trail寻求灵感,但两者都使用Thread.current变量来存储用户信息,当然我认为这是hacky而且不安全 。

在基本设计方面,我做得对吗? 我还有哪些其他选项可以从我的gem中捕获用户信息? 我是否应该在相应的控制器中设置filter以创建通知,以防万一使用vanilla current_user方法?

任何想法,将不胜感激。 谢谢。

更新

我正在考虑将虚拟属性用于具有通知回调的模型,并使用之前的filter将它们设置在适当的控制器中。

我建议模仿Cocoa中使用的通知模式。 基本上,您可以将用户信息字典传递给通知,以便您可以放置​​所需的数据。

如果我对你的gem应该如何使用有正确的预感我猜想带有通知回调的模型很可能与用户有一些关系,对吧?

然后,您可以从关系中提取用户的数据,即record.userrecord.user_id 。 也许你可以默认为#user并提供和.has_notification, through: "account"这样的.has_notification, through: "account"当用户关系的命名方式不同时。

如果模型没有关系,那么开发人员就可以传递用户对象并以自定义方法提供它。