2011-03-06 41 views
0

這是我目前的表設置:Rails的DB協會發出

葡萄酒
ID ...等。等


ID,wine_id,competition_id,medal_id,日期,鏈接

比賽
ID,名稱


標識,類型

獎> belongs_to的:酒
Wine> has_many:awards,:autosave => true,:dependent =>:destroy

這一切都很好,但我希望能夠爲每個獎項的比賽和獎牌引用「名稱」和「類型」列。目前我只能看到'competition_id'和'medal_id'...我想能夠說'@ wine.awards [0] .medal'這會導致「黃金」...甚至'medal_type'對於這個問題。我將如何在我的模型中設置該關聯?

回答

1

如果我深知,使用這種關係:

Award > belongs_to :medal 

所以可以說@ wind.awards [0] .medal.type,並有 「金」 作爲結果。每一種關係必須定義,所以你必須也添加

Award > belongs_to :competition 

所以,你可以到@ wine.awards [0] .competition.name

而且還向後關係是很重要的。

Competition > has_many :awards 
Medals > has_many :awards 
+0

在獎模型belongs_to似乎已經解決了這個問題,謝謝!然而我不明白爲什麼使用has_many作爲競賽和獎牌模型是有意義的,因爲它們不是爲了獲得獎勵 - 它們只是一個名稱/值對。 – JakeTheSnake 2011-03-06 21:45:56

+0

假設你想找到所有在leas獲得金牌的葡萄酒。有了正確的後向關係,你可以做Medal.find_by_type('gold')。awards.collect(&:wine),例如! – 2011-03-06 21:56:19