2013-02-05 234 views
0

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

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的运行它搜索与x的game_id第一项统计查询。因此,如果home_stats是最新条目,则home_stats和away_stats都将设置为home_stats条目。如果它是离开游戏,他们都会被设置为。

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" 

回答

2

的问题是,有没有办法找出统计的实例作为居家或外出。 (你有显示)

一个潜在的解决办法是引入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}