jsp*_*ner 5 ruby activerecord ruby-on-rails
实现与activerecord有两个关联的最佳方法是什么?
我有团队和游戏模型.每个团队都会有很多游戏@team.games.一个游戏将有两支球队@game.hosting_team和@game.opposing_team.
我从两个belongs_to/has_one协会开始,但后来@team.games才会回归他们的主场比赛.
我能想到的另一个选择是使用HABTM并使用验证器来确保只有记录.唯一缺少的就是跟踪主队.似乎我需要一个有很多通过协会,但我不完全确定...
谢谢你的帮助.
这是两个has_many关联的外观示例.这里的问题是我必须打电话team.games并team.opponents获得他们的游戏的完整列表
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
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西,但这显然不是belongs_to的工作原理.
class Team < ActiveRecord::Base
has_many :games
end
class Game < ActiveRecord::Base
belongs_to :hosting_team
belongs_to :opposing_team
end
Run Code Online (Sandbox Code Playgroud)
我想要的api看起来像这样.
@team.games # return all games home or away
@game.hosting_team # Team
@game.opposing_team # Team
Run Code Online (Sandbox Code Playgroud)
您可能仍然可以使用 bt/ho 关联对其进行建模,并将游戏设置为团队中的访问器方法而不是关联:
class Team < ActiveRecord::Base
def games
Game.find(:conditions => ["home_team_id = ? OR away_team_id = ?", id, id])
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2028 次 |
| 最近记录: |