【问题标题】:A notification system to track user activity on Rails在 Rails 上跟踪用户活动的通知系统
【发布时间】:2011-09-20 07:26:03
【问题描述】:

我正在开发一个可以根据事件触发器生成通知的 gem。例如,在 CMS 中,如果创建了一篇文章,则会生成“用户 y 创建的文章 x”的通知。 (如 Github/Facebook 通知)。

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

问题当然是,当回调被触发时,gem 中的相应动作被调用,但是这个动作需要执行该动作的用户的用户 ID 来生成通知。强>

我从 acts_as_auditedpaper_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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    然后您可以从关系中提取用户的数据,即record.userrecord.user_id。当用户关系命名不同时,也许您可​​以默认为#user 并提供.has_notification, through: "account" 之类的选项。

    如果模型没有关系,则由开发人员负责传递用户对象并提供可通过自定义方法访问的对象。

    【讨论】:

    • 嗯。那么用户可能会或可能不会与具有通知回调的模型相关联。但是,是的,在某种程度上,我需要传递用户对象。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2011-04-12
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    相关资源
    最近更新 更多