gpt4 book ai didi

ruby-on-rails - Rails 事件记录计数关联数

转载 作者:行者123 更新时间:2023-12-05 07:36:42 26 4
gpt4 key购买 nike

我有一个名为 Impression 的模型 - 它计算每张卡片(也是一个模型)的浏览量。我正在尝试用卡片打印一张表格,该表格在上个月至少有 10 次浏览。所以我开始 -

cards = Card.joins(:impressions).where("impressions.created_at > ? AND impressions.created_at < ?", Date.today-30.days, Date.today).uniq

然后我做了 -

cards.select {|card| card.impressions.count >= 10 }

但它运行了很长时间。我想要更有效率的东西。有计算展示次数和排序的想法吗?

我想尽可能高效地完成它 - 而不是使用 N+1 问题遍历整个数据库,因为它可能会变得非常难看。

最佳答案

您的印象表的 created_at 列是否有索引?

如果您正在查询它但没有 - 您可以通过生成迁移文件来添加它。

add_index(:impressions, :created_at)

您可以使用纯 SQL 向您的查询添加条件,例如:

cards = Card.joins(:impressions)
.where("impressions.created_at > ? AND impressions.created_at < ?", Date.today-30.days, Date.today)
.group('cards.id')
.having('COUNT(impressions.*) >= 10')

关于ruby-on-rails - Rails 事件记录计数关联数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045646/

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