2013-04-17 86 views
2

我有三個,one-to-many關係,一個has_many :through協會,並與我想總結的屬性的對象。導軌的has_many:通過對「子對象」和屬性 - > SQL Toughy

這聽起來可能很傻,但假設例如棒球爲主題的應用程序:

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

我想要做什麼,在聯賽show頁面列表中相應的每個team,總結多少本壘打每支球隊都有,累計。 (Feethomerun屬性。)

我現在能得到的最接近的是@league.homeruns.sum(:feet)(顯示在每個聯盟本壘打多少總距離如何),但我想在球隊層面,通過過濾聯賽做到這一點。

有意義嗎?任何幫助將深表感謝。

回答

8

如果您添加: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 

爲了然後列出所有球隊特定,只是通過每個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>