gpt4 book ai didi

ruby-on-rails - 如何在 ActiveRecord 中加入 SUM

转载 作者:搜寻专家 更新时间:2023-10-30 19:42:28 24 4
gpt4 key购买 nike

假设我有两个简单的模型

project
t.string :title

vote
t.references :project
t.integer :value

当我遍历所有项目时,我还想包括所有投票的总和,因为这样做

projects = Project.all

foreach project in projects
sum = project.votes.sum(:value)
...

不是很有效。

有什么方法可以在不手动编写 SQL 的情况下做到这一点吗?有点像

SELECT p.*, SUM(v.value)
FROM projects p
LEFT JOIN votes v
ON v.project_id = p.id
GROUP BY p.id

最佳答案

如果这被频繁计算,您最好在项目记录 (total_votes) 中保留汇总统计数据。您可以更新每次投票,也可以通过 cron 作业更新。

不过我认为您正在寻找以下内容:


@totals = Vote.sum(:value,:group=>:project_id)
@projects = Project.find(:all)

然后

<%=h @project.title %> has <%= @totals[@project.id] %> votes.

关于ruby-on-rails - 如何在 ActiveRecord 中加入 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347648/

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