gpt4 book ai didi

ruby-on-rails - 如何计算 has_many 关联的所有子记录?

转载 作者:行者123 更新时间:2023-11-29 11:54:10 27 4
gpt4 key购买 nike

有以下模型

class Release
has_many :sprints
end

class Sprint
has_many :tasks
belongs_to :release
end

class Task
belongs_to :sprint
end

如何统计特定版本的所有任务

我试过了,但它执行了两个查询,而且看起来效率不高:

def total_task_count
release = Release.find(1)
Task.where(sprint_id: release.sprints.pluck(:id)).count
end

在一个 child 协会中统计所有 child 协会的更好方法是什么?

此外,如果我想在 ListView 中执行此操作:

@releases.each do |release|
<%= release.total_tasks_count %>
end

我如何才能执行单个查询而不是每个版本执行一个查询?

最佳答案

添加一个 has_many through 关系。查看Rails guide

release 模型中,添加:

has_many :tasks, through: :sprints

然后你可以做

@releases.each do |release|
<%= release.tasks.count %>
end

关于ruby-on-rails - 如何计算 has_many 关联的所有子记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40091085/

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