2012-12-10 90 views
0

這可能是一個新手問題,但我無法弄清楚最佳解決方案。 我有一個Color模型和一個Cover模型。大多數時候,一個覆蓋has_one :color。也許一出一百箱,封面has_many :colors。 我必須執行兩個模型之間的has_many :through關聯嗎?看起來多餘。定義這種關係的最佳做法是什麼?Rails:主要有has_one /有時has_many關係

回答

1

我認爲你應該覆蓋一般情況,當Cover has_many :colors。所以這是一個多對多的關係。在這種情況下,你將有2種選擇:

  1. 使用連接表,如果你只需要存儲cover_idcolor_id在連接表,所以你會用has_and_belongs_to_many定義的關聯。有了這個選項,你將不得不創建連接表。

  2. 使用加盟模式,如果你需要存儲不僅cover_idcolor_id,還包括其他的屬性,你需要做一些計算,所以你必須使用has_many :through來定義的關聯。有了這個選項,你將不得不創建新的模型。

+0

謝謝。你引導我走向正確的方向。 –

0

封面has_many :colors將是最好的方式,即使只有一個需要它的情況。

+0

顏色也'has_many:覆蓋',因此它成爲一個多 - 許多協會。我是否需要創建一個新的'Relationship'模型並實現'has_many:through'? –