gpt4 book ai didi

ruby-on-rails - 如何在rails中创建通知系统?

转载 作者:行者123 更新时间:2023-12-03 02:00:17 25 4
gpt4 key购买 nike

基本上,我想创建一个像 Facebook 和 Stackoverflow 一样的通知。具体来说,在评论后系统中,当帖子被评论时,所有相关人员(创建帖子和创建评论的人,新评论者除外)都会收到一条通知消息,表明该帖子已被评论。当人们阅读后,通知就会被忽略。

我尝试使用 ma​​ilboxer gem 来实现它,但遗憾的是没有使用其相关方法的示例,包括 social_stream 本身。

还有其他方法来创建通知系统吗?

当我尝试从头开始创建它时,我遇到了几个问题:

    Model Notification
topic_id: integer
user_id: integer
checked: boolean #so we can tell whether the notification is read or not
  1. 用户阅读后关闭通知

我认为我们只需要在用户访问通知索引后将每个通知消息的“checked”属性设置为true即可。(在NotificationsController中)

    def index
@notifications=current_user.notication.all
@notification.each do |notification|
notification.checked = true
end
@notification.save!
end

2.选择要通知的用户(并排除发表新评论的用户)

我只是不知道如何写查询......

3.创建通知

我认为这应该是这样的

    #in CommentController
def create
#after creating comments, creat notifications
@users.each do |user|
Notification.create(topic_id:@topic, user_id: user.id)
end
end

但是我觉得这真的很难看

无需回答上述 3 个问题,任何简单的通知系统解决方案都更好,谢谢......

最佳答案

我认为你走在正确的道路上。

稍微好一点的通知#index

def index
@notifications = current_user.notications
@notifications.update_all checked: true
end
  • 通知该用户

    User.uniq.joins(:comments).where(comments: {id: @comment.post.comment_ids}).reject {|user| user == current_user }
  • 参与@comment帖子评论的唯一用户,拒绝(从结果中删除)current_user。

  • 正如 João Daniel 所指出的,它比 after_create 更受欢迎。这个“Rails 最佳实践”描述得很好:http://rails-bestpractices.com/posts/2010/07/24/use-observer
  • 关于ruby-on-rails - 如何在rails中创建通知系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15386254/

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