gpt4 book ai didi

ruby-on-rails - 如何将新闻源中的项目排序为 last_active_at?

转载 作者:行者123 更新时间:2023-11-29 12:47:11 25 4
gpt4 key购买 nike

在这个问题中,我有两个数据库表:

  • 发表(有_很多:评论)
  • ActivityFeed (belongs_to item, :polymorphic)
  • 评论(belongs_to :post)

假设在 facebook 的一个群组内发生了这些连续的 Action :

  1. 用户 A 发布了状态“状态 1”
  2. 用户 B 发布了状态“状态 2”

然后这 2 个帖子中的每一个都触发了为该组创建 FeedItem(事件)。

现在,当用户加载页面时,提要事件按 created_at/updated_at 排序。提要事件是一组多态对象(可以是帖子、照片、投票、文件...)。

如果稍后用户 A 评论了用户 B 的帖子,则提要的正确顺序现在应该是:

  1. “状态 2”
  2. “状态 1”

那么当用户 A 评论“状态 2”时会发生什么?我是否必须找到相关帖子(添加评论的位置)并更新帖子相关事件的时间戳?

我需要一些建议。谢谢!


更新

class Comment < ActiveRecord:Base
belongs_to :post, touch: true
end

class Post < ActiveRecord:Base
has_many :comments
act_as_activity -> on_create will create a Activity representing this object
end

class Activity < ActiveRecord:Base
belongs_to :item, :polymorphic => true
belongs_to :parent, :polymorphic => true
belongs_to :user
end

所以提要查询将查找事件表,因为我可以在提要中有多种类型的对象。并且评论帖子时必须刷新此表中的时间戳,因为查询是在 Activity 表中完成的:

SELECT * FROM Activity 
ORDER BY updated_at

最佳答案

如果我理解正确,帖子应该以“最近”的顺序显示。在帖子上添加评论应该会刷新“最近”时间。

这里有一些值得尝试的东西。有一个名为 :touch 的 belongs_to 关联选项。通过添加此选项,只要从关联中添加(或删除)评论,在帖子上添加评论应该会导致帖子上的 updated_at 字段更新。

http://guides.rubyonrails.org/association_basics.html

例如:

class Comment < ActiveRecord:Base
belongs_to :post, touch: true
end

class Post < ActiveRecord:Base
has_many :comments
end

然后您对 Post 实例的 :updated_at 字段进行排序。

关于ruby-on-rails - 如何将新闻源中的项目排序为 last_active_at?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14399334/

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