我正在使用[Ahoy gem]来跟踪人们查看文章的次数。1
我想做的是根据这些视图按视图降序显示上个月最流行的articles
。
这在Ahoy::Event中跟踪,如下所示:
#<Ahoy::Event:0x00007fb8ab515660
id: 1,
visit_id: 1,
user_id: 1,
name: "Viewed Article",
properties: {"id"=>"1"},
time: Fri, 06 Jan 2023 04:36:38.155342000 UTC +00:00>
与Article模型没有关联。
使用此SO帖子:Ahoy events queries in rails
我能够做到这一点:
Ahoy::Event.where(time: 30.days.ago..Time.zone.now).group("properties -> 'id'").count
它返回以下内容(article.id =〉count):
{"1"=>1, "2"=>1}
但是,我想不出如何最好地:
1.将其与Article
表连接以获取文章详细信息
1.对它们进行排序,使其按计数的降序排列
先谢了!
1条答案
按热度按时间qcuzuvrc1#
我相信你在这一部分有答案
关于订购,您可以添加
order('COUNT(ahoy_visits.id) desc
因此,最终查询将类似于
Article.joins(:ahoy_visit).where( ahoy_visits: { time: 30.days.ago..Time.zone.now } ).group("ahoy_visits.properties -> 'id'").order('COUNT('ahoy_visits.id') desc).count