Som*_*lse 4 activerecord ruby-on-rails
我有三个,one-to-many关系,一个has_many :through关联和一个具有我要总结的属性的对象.
这可能听起来很愚蠢,但假设例如以棒球为主题的应用程序:
:league has_many :teams
:team has_many :users
:league has_many :homeruns, :through => :users
:user has_many :homeruns
Run Code Online (Sandbox Code Playgroud)
我想做的事情,联赛上的show网页是每个列表team中相应的league,总结了多少脚在本垒打每支球队都有,累计.(Feet是属性homerun.)
我现在能得到的最接近的是@league.homeruns.sum(:feet)(显示每个联盟的本垒打总距离),但我想在球队一级做到这一点,按联赛过滤.
合理?任何帮助将深表感谢.
Zai*_*uch 10
如果你添加:team has_many :homeruns, through: :users,那么你可以team.homeruns.sum(:feet)用来获得每个团队的成绩,对吧?将它移动到team模型中的方法可能是最好的:
# team.rb
has_many: homeruns, through: :users
def total_homerun_distance
self.homeruns.sum(:feet)
end
Run Code Online (Sandbox Code Playgroud)
然后列出特定的所有团队league,只需遍历每个team属于league视图中的团队,包含在您想要的任何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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3427 次 |
| 最近记录: |