我是一名刚开始使用ruby on rails的初学者,试图确定我的模型之间的关系Matches
,Teams
。
我希望我的匹配两次引用Teams
表,一次是homeTeam
,另一次是awayTeam
。我想我最大的问题是,我在模特中宣布关系不正确吗?
目前我甚至无法通过比赛拨打团队名称。
我希望能够调用Team.matches列出一个团队拥有的所有匹配项,无论是列为homeTeam还是offTeam,最终都可以为特定团队调用主场或客场比赛。
我也希望能够调用Match.teams / Match.homeTeam / Match.awayTeam来列出特定比赛的球队。
这是我到目前为止所拥有的:
匹配迁移
class CreateMatches < ActiveRecord::Migration
def change
create_table :matches do |t|
t.references :homeTeam
t.references :awayTeam
end
end
end
匹配模型
class Match < ActiveRecord::Base
has_one :homeTeam, :class_name => 'Team'
has_one :awayTeam, :class_name => 'Team'
end
团队模型
class Team < ActiveRecord::Base
has_and_belongs_to_many :matches
end
提前致谢!
答案 0 :(得分:1)
你可以这样做:
class Match < ActiveRecord::Base
belongs_to :hometeam, :class_name => 'Team'
belongs_to :awayteam, :class_name => 'Team'
#if you want to select all teams of a match, you can create a method
def teams
Team.find(self.hometeam_id, self.awayteam_id)
end
end
class Team < ActiveRecord::Base
has_many :home, class_name: 'Match', foreign_key: 'hometeam_id'
has_many :away, class_name: 'Match', foreign_key: 'awayteam_id'
end