2013-02-13 114 views
1

我有一個問題,我以某種不滿意的方式解決。Rails兩對多關係

我有一個遊戲模型,在遊戲中總是有兩個團隊參與到Team模型中。我通過ID team1_id和team2_id參考這些球隊。從我的觀點來看,每當我想拉動整個團隊的記錄時,我都必須每次都找到一個。

我想知道是否有任何方法可以引用這兩個團隊,而無需經歷多對多的關係,還是唯一的方法?這幾乎是一個2-Many關係,我知道這並不存在,但我想知道解決這類問題的最佳方法。

謝謝

這是我遷移的快照:

create_table :games do |t| 
    t.datetime "time" 
    t.integer "team1_id" 
    t.integer "team2_id" 


create_table :teams do |t| 
    t.references :city 
    t.references :user 
    t.string "name", :default => "", :null => false 
+0

它有時更想這些東西通過模型而不僅僅是表格。發佈你的模型... – 2013-02-13 02:17:14

+0

我的團隊和遊戲之間沒有任何連接。如果我應該有一個連接,它應該是什麼? belongs_to:遊戲兩次?我不認爲這會起作用。 – 2013-02-13 02:23:06

+0

是的,最好在模型中建立連接。但我認爲已經有一個答案將你帶到那裏。 – 2013-02-13 02:27:18

回答

3

你有它設置的方式是正確的方式。 在遊戲模式讓兩支球隊的引用,TEAM1和TEAM2

class Game 
    belongs_to :team1, class_name: 'Team' 
    belongs_to :team2, class_name: 'Team' 
end 

然後,你可以調用TEAM1在遊戲實例的TEAM2,它會拉動團隊爲您服務。

game = Game.first 
game.team1 
game.team2 

或者你可以從遊戲模式掉落TEAM1和TEAM2的ID,並創建一個連接表與遊戲和團隊,一個你只需要調用「game.teams」

+0

哦,這有效嗎? Rails是否理解1和2?我會嘗試。 – 2013-02-13 02:24:33

+0

沒有,沒有按照我的預期工作:NoMethodError:未定義的方法'team1' – 2013-02-13 02:28:41

+0

聽起來像你要麼改寫了一些東西,要麼在改變後沒有重新加載你的模型。 – cpuguy83 2013-02-13 02:30:36