SQL Toughy-6ren"> SQL Toughy-我有三个一对多关系、一个has_many :through关联和一个具有我想要求和的属性的对象。 这可能听起来很愚蠢,但假设有一个棒球主题的应用程序: :league has_many :teams -6ren">
gpt4 book ai didi

ruby-on-rails - Rails has_many :through sum attribute on "child objects" --> SQL Toughy

转载 作者:行者123 更新时间:2023-12-02 14:05:15 26 4
gpt4 key购买 nike

我有三个一对多关系、一个has_many :through关联和一个具有我想要求和的属性的对象。

这可能听起来很愚蠢,但假设有一个棒球主题的应用程序:

:league has_many :teams 
:team has_many :users
:league has_many :homeruns, :through => :users
:user has_many :homeruns

我想要做的,在联赛show页面上列出各自联赛中的每个球队,并总结有多少每支球队累计的本垒打数>英尺。 (Feethomerun 上的一个属性。)

我现在能得到的最接近的是@league.homeruns.sum(:feet)(显示每个联盟本垒打的总距离),但我想在团队级别上进行此操作,进行过滤按联赛划分。

有道理吗?任何帮助将不胜感激。

最佳答案

如果您通过: :users 添加 :team has_many :homeruns,则可以使用 team.homeruns.sum(:feet) 来获取您想要的内容每支球队之后,对吗?最好将其移至您的 team 模型中的方法中:

# team.rb
has_many: homeruns, through: :users

def total_homerun_distance
self.homeruns.sum(:feet)
end

要列出特定league的所有球队,只需在 View 中迭代属于该league的每个team,包装在无论你想要什么 HTML。例如,将其显示为表格:

# views/leagues/show.html.erb
<table>
<% @league.teams.each do |team| %>
<tr>
<td><%= team.name %></td>
<td><%= team.total_homerun_distance %></td>
</tr>
<% end %>
</table>

关于ruby-on-rails - Rails has_many :through sum attribute on "child objects" --> SQL Toughy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16052191/

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