2014-09-03 85 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

回答

相关问题