2014-09-03 94 views
1

我對用於記錄足球(足球)比賽統計信息的Rails應用程序的數據庫設計有些疑問。多個has_many通過相同模型之間的關聯

我有三個型號:

  • 比賽
  • 球員
  • 目標

其中有如下關係:

  • 每場比賽可以有很多進球的進球主隊球員
  • 每場比賽可以被客隊球員
  • 每個球員(的家庭和客隊)進了很多球能進很多球在比賽中

這裏是我的模型的結構:

class Match < ActiveRecord::Base 
    has_many :home_goals, 
     class_name: 'Goal', 
     foreign_key: 'home_match_id' 
    has_many :home_scorers, 
     class_name: 'Player', 
     foreign_key: 'home_scorer_id', 
     through: :home_goals 

    has_many :visitor_goals, 
     class_name: 'Goal', 
     foreign_key: 'visitor_match_id' 
    has_many :visitor_scorers, 
     class_name: 'Player', 
     foreign_key: 'visitor_scorer_id', 
     through: :visitor_goals 

    ... 

end 


class Goal < ActiveRecord::Base 
    belongs_to :home_match, 
     class: 'Match', 
     foreign_key: 'home_match_id' 
    belongs_to :visitor_match, 
     class: 'Match', 
     foreign_key: 'visitor_match_id' 

    belongs_to :player 
end 


class Player < ActiveRecord::Base 
    has_many :goals 
    has_many :home_matches, 
     class_name: 'Match', 
     foreign_key: 'home_scorer_id', 
     through: :goals 

    has_many :visitor_matches, 
     class_name: 'Match', 
     foreign_key: 'visitor_scorer_id', 
     through: :goals 

    ... 

end 
  1. 我可以做這樣的嵌套 「has_many_through」 的關係?

  2. 不尋常的是,一名球員可以在比賽中得分超過一個球。因此,有可能有同一名球員和相同比賽的多個目標。 這是可能的或可能導致錯誤?

  3. 我的終極目標是能夠統計所有比賽中球員的進球數,獲得每場比賽的主隊球員名單,主場球員,參觀球員和參觀者目標。有沒有更好的方法來組織數據庫?

+0

你爲什麼不嘗試'rails console'中的所有功能? – Surya 2014-09-03 10:35:24

回答

相關問題