0

如果我有一个模型有两个对同一模型的引用,我该如何设置它?我现在拥有的是

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"
4

1 回答 1

2

问题是没有办法将 Stats 的实例标识为 home 或 away。(你已经展示了)

一个潜在的解决方法是在 中引入一homestats,然后将关系更改为:

class Game < ActiveRecord::Base
  has_one :home_team_stats, :class_name => 'Stats', :conditions => {:home => true}
  has_one :away_team_stats, :class_name => 'Stats', :conditions => {:home => false}
于 2013-02-05T02:05:01.563 回答