0

想象一下,我有一個名爲Course的模型,每個課程has_many Modules。不過,我希望模塊是不同類型的範圍。如何在Rails 3中建立多態has_many關係

例如,Module模型將是父類,將有兩個字段:titledescription,這將是通用在所有類型的孩子。

現在我需要Course能夠有任意數量的SlideshowVideoImageText實例,但他們必須通過Course#modules進行檢索。

考慮每個子類類型都有自己的屬性,如Video可以有一個url場,而Text可能有contents,例如。

建立此關聯的正確方法是什麼?

+0

這個問題似乎是相似的,也許你會發現一些有用的信息在這裏:http://stackoverflow.com/questions/3209322/rails-polymorphic-has-many –

回答

0

我認爲有2個選項(可能的組合):

  • 使用多態關聯(見"Polymorphic Associations"爲例)。遷移應該是這樣的:

    create_table :courses do |t| 
        t.references :modules, :polymorphic => {:default => 'Text'} 
    end 
    
  • 使用單表繼承:有你的模型是從公共基類的子類,這是唯一一個包含所有列的所有模型類表實現對數據庫。

看看"Alex Westholms Blog"關於2和比較。我認爲你應該使用多態關聯,因爲你的模塊有很多不同的屬性。

1

這可能是有點晚了,但在你的所謂的「模塊」應用模式將引發各種與名稱衝突的問題......

+0

謝謝朱爾斯,但這是從葡萄牙語「Modulos」沒有名稱衝突問題的翻譯。但好點! – kolrie