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
我可以做这样的嵌套 “has_many_through” 的关系?
不寻常的是,一名球员可以在比赛中得分超过一个球。因此,有可能有同一名球员和相同比赛的多个目标。 这是可能的或可能导致错误?
我的终极目标是能够统计所有比赛中球员的进球数,获得每场比赛的主队球员名单,主场球员,参观球员和参观者目标。有没有更好的方法来组织数据库?
你为什么不尝试'rails console'中的所有功能? – Surya 2014-09-03 10:35:24