更新时间:2022-11-21 12:52:02
您可以或许仍与BT /豪关联建模它,并设置了游戏,对球队的存取方法,而不是作为一个协会:
类团队及LT;的ActiveRecord :: Base的
高清游戏
Game.find(:条件=>home_team_id = OR away_team_id =?,ID,ID])
结束
结束
What is the best way to achieve a has two association with activerecord?
I have a Team and Game models. Each Team will have_many games @team.games
. A Game will have two teams @game.hosting_team
and @game.opposing_team
.
I started out with two belongs_to/has_one
associations but then @team.games
would only return their home games.
The other option I can think of is using a HABTM and use a validator to ensure there are only records. The only thing missing is keeping track of the home team. It seems like I need a has many through association but I'm not exactly sure...
Thanks for your help.
This is an example of how the two has_many associations look. The problem here is I would have to call team.games
and team.opponents
to get a full list of their games
class Team < ActiveRecord::Base
has_many :games
has_many :opponents, :class_name => "Team"#, :foreign_key => ""
end
class Game < ActiveRecord::Base
belongs_to :team, :class_name => "Team" #, :foreign_key => "team_id"
belongs_to :opponent, :class_name => "Team" #, :foreign_key => "opponent_id"
end
I'd like something like this but this obviously isn't how belongs_to works.
class Team < ActiveRecord::Base
has_many :games
end
class Game < ActiveRecord::Base
belongs_to :hosting_team
belongs_to :opposing_team
end
My desired api would look like this.
@team.games # return all games home or away
@game.hosting_team # Team
@game.opposing_team # Team
You can probably still model it with the bt/ho associations, and set up games as an accessor method on the team instead of as an association:
class Team < ActiveRecord::Base
def games
Game.find(:conditions => ["home_team_id = ? OR away_team_id = ?", id, id])
end
end