【发布时间】:2011-09-20 07:26:03
【问题描述】:
我正在开发一个可以根据事件触发器生成通知的 gem。例如,在 CMS 中,如果创建了一篇文章,则会生成“用户 y 创建的文章 x”的通知。 (如 Github/Facebook 通知)。
在我的 gem 中,我有一个 has_notifications 方法,当在模型中指定时,它会注册 callbacks。
问题当然是,当回调被触发时,gem 中的相应动作被调用,但是这个动作需要执行该动作的用户的用户 ID 来生成通知。强>
我从 acts_as_audited 和 paper_trail 寻找灵感,但它们都使用 Thread.current 变量来存储用户信息,当然我相信是 hacky and not safe。
在基本设计方面,我做得对吗?我还有哪些其他选项可以从我的 gem 中捕获用户信息?我是否应该在各个控制器中设置过滤器以创建通知,以防万一使用 vanilla current_user 方法?
任何想法将不胜感激。谢谢。
更新
我正在考虑为具有通知回调的模型使用虚拟属性,并使用 before 过滤器将它们设置在适当的控制器中。
【问题讨论】:
-
嘿伙计。我也要为通知创建一个 gem。请为我们发明一种交谈/聊天的方式
-
我只是打算在未来的用例中使用github.com/pokonski/public_activity。
标签: ruby-on-rails thread-safety gem push-notification