所以我有两个模型的帖子和主题
帖子的“浏览”次数。
帖子有一个主题。
在这里,我想得到最多的看法主题和秩序 DESC
(使用rails活动记录的所有标记了该主题的帖子的最高总视图)。这是我目前的代码,我正在尝试做什么,但它是不正确的:-
class Topic < ApplicationRecord
has_many :posts
scope :ordered, -> {
joins(:posts).order("sum(posts.viewed) DESC").limit(2).uniq
}
end
2条答案
按热度按时间oug3syen1#
你需要分组你的主题
这就行了
92dk7w1h2#
以和为序来求和是一种不好的模式。
我建议你加一个
total_views:integer
列,并在post.views的总和更改时更新它。当一个孩子
viewed
值增加时,可以调用回调来自动更新total_views
列。post.rb可以有如下内容:
主题.rb:
在你的控制器里你可以打电话
Topic.all.order(total_views: :desc)