如果我有一个模型有两个对同一模型的引用,我该如何设置它?我现在拥有的是
class Game < ActiveRecord::Base
has_one :home_team_stats, :class_name => 'Stats'
has_one :away_team_stats, :class_name => 'Stats'
class Stats < ActiveRecord::Base
belongs_to :game
但是,当 Activerecord 运行查询时,它会搜索第一个 game_id 为 x 的 Stats 条目。因此,如果 home_stats 是最新条目,则 home_stats 和 away_stats 都设置为 home_stats 条目。如果是 away_game,他们都会被设置成这样。
Stats Load (0.3ms) SELECT "stats".* FROM "stats" WHERE "stats"."game_id" = 1 LIMIT 1
据我了解,解决此问题的方法是将关系从 has_one 更改为 belongs_to 或类似的东西。但这感觉本质上是错误的,因为通俗地说,统计数据属于一场比赛,一场比赛有主队和客队的统计数据。有没有更好的方法来设置它?
编辑:想通了。
我将游戏模型更改为以下内容:
has_one :home_team_stats, :class_name => 'Stats', :foreign_key => "id", :primary_key => "home_team_stats_id"
has_one :away_team_stats, :class_name => 'Stats', :foreign_key => "id", :primary_key => "away_team_stats_id"