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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |