加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails has_many:通过“子对象”的sum属性 –

发布时间:2020-12-17 03:55:04 所属栏目:百科 来源:网络整理
导读:我有三个,一对多的关系,一个has_many:通过关联和一个具有我要总结的属性的对象. 这可能听起来很愚蠢,但假设例如以棒球为主题的应用程序: :league has_many :teams :team has_many :users :league has_many :homeruns,:through = :users:user has_many :hom
我有三个,一对多的关系,一个has_many:通过关联和一个具有我要总结的属性的对象.

这可能听起来很愚蠢,但假设例如以棒球为主题的应用程序:

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

我想做的事情,在联赛表演页面上列出各自联赛中的每支球队,并累计每支球队有多少英尺的本垒打. (英尺是本垒打的一个属性.)

我现在能得到的最接近的是@ league.homeruns.sum(:feet)(显示每个联赛的本垒打总距离)但是我想在球队一级做到这一点,按联赛过滤.

合理?任何帮助将深表感谢.

解决方法

如果你添加:team has_many:homeruns,通过:: users,你可以使用team.homeruns.sum(:feet)来获得每个团队的成绩,对吧?将其转换为团队模型中的方法可能最好:

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

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

然后列出特定联盟的所有团队,只需遍历视图中属于该联盟的每个团队,包含在您想要的任何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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读