2010-06-19 40 views
0

我正在設計RoR中的基本運動應用程序,我不知道我的數據庫設計是否正確。舉例來說,我有:RoR DB Design - 我需要使用a:through表嗎?

class Game < ActiveRecord::Base 
    has_one :home_team 
    has_one :away_team 
end 

class Team < ActiveRecord::Base 
    has_many :games 
end 

然而,有人告訴我更好的方式來做到這一點是:

class Game < ActiveRecord::Base 
    has_many :teams, :through => :game_teams, :limit => 2 
end 

class Team < ActiveRecord::Base 
    has_many :games, :through => :game_teams 
end 

class Game_Teams < ActiveRecord::Base 
    belongs_to :game 
    belongs_to :team 
end 

是否有一個原因,我會或不會想無論是設計?

回答

1

我不認爲你的第一種方法會按照現狀工作。如果您games表有兩個字段home_team_idaway_team_id那麼你has_one協會將不得不像has_one :home_team, :class => 'Team'

此外,Team has_many :games將假設game表中有一個字段team_id所以你需要添加:conditions也許:finder_sql得到Teamhome_team_idaway_team_id中尋找它的遊戲。這說明了你的第一種方法的缺點,基本上每當你想知道你有2個領域可以看的球隊的所有比賽時。