gpt4 book ai didi

ruby-on-rails - 使用 Rails 4 构建通知系统的方法

转载 作者:行者123 更新时间:2023-12-02 04:11:34 24 4
gpt4 key购买 nike

我在 Rails 中有一个 USER 模型,我想为其实现一个通知系统。该通知系统旨在像 Facebook 的通知一样工作。以互联网上的指南为基础,我推测通知需要自己的模型。

因此它将是:

Users :has_many Notifications 
Notifications :belongs_to Users

用户模型与应用程序上的许多模型交互,例如文章、帖子、文章和帖子的评论。用户可以“关注”这些资源并接收它们的通知。我的理论是,每当这些资源更新时,我都会为每个“关注者”创建通知,如下所示:

文章更新示例:

def update
#after the code to update article
@followers.each do |follower|
Notification.create(#code to associate notification with user)
end
end

然后,只需使用

显示通知
current_user.notifications 

我的主要问题是是否有比我概述的更好的通知方法?另外,在相关说明中,像这样创建通知将使用以下对象填充数据库中的行:随着时间的推移不再需要(即一年前的通知无关)。将这些未使用的对象保留在数据库中并让它们累加会产生负面后果吗?

最佳答案

如果您愿意使用 gem,我会使用 Public Activity gem 为此。公共(public)事件的架构根据收件人、所有者和 key 创建事件记录,即所有者:“User 1” key :对收件人:“User 2”帖子进行评论。这样做的好处数据库中只有一条事件记录,您可以通过每种类型的事件的不同 View 以任何您喜欢的方式呈现它。

公共(public)事件允许您根据事件键呈现不同的部分并访问数据库中引用的操作的任何数据。您甚至可以为新闻源(涉及当前用户之后的用户的事件)和通知源(直接涉及当前用户的事件)创建不同的 View 。这使您的通知源保持灵活性。

此外,如果将它与 Unread 结合起来gem 和一些 javascript,你甚至可以像 Facebook 一样标记已读和未读通知(针对每个特定用户)。唯一的缺点是这些事件只会在刷新或访问页面时出现,而不是像 facebook 那样不断轮询。关于公共(public)事件有一个很棒的教程here.

关于ruby-on-rails - 使用 Rails 4 构建通知系统的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36463984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com