2013-02-05 149 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}