1

我創建的應用程序允許用戶創建課程並在課程中包含不同類型的資源(文檔,視頻,測驗)。我很難找出建立課程與資源之間聯繫的最佳方法。多表繼承與多態

現在,我有:

class Course < AR::Base 
     has_many :documents 
     has_many :videos 
     has_many :quizzes 
    end 

    class Document <AR::Base 
     belongs_to :course 
    end 

    class Video <AR::Base 
     belongs_to :course 
    end 

    class Quiz <AR::Base 
     belongs_to :course 
    end 

文檔,視頻和測驗都具有不同的一些共同的屬性(例如,名稱,描述),但也有許多屬性。我考慮過使用STI並讓他們繼承一個名爲「Lessons」的類。我決定不採用這種方法,因爲我需要爲每個類使用多個控制器。

最終,我希望能夠對屬於課程的所有資源執行操作,例如將所有文檔,視頻和測驗列在一起,並將它們顯示爲可排序列表。

關於如何最好地設置此模型的任何建議。看來,如果我能做到這一點有兩種方法:

  • 反向多態性HAS_ONE協會(見example
  • 多表繼承(見example

我是小白的軌道,所以我」很難評估哪種方法最適合這種情況。任何意見,將不勝感激!

回答

0

最終,我希望能夠對屬於課程的所有資源執行操作,例如將所有文檔,視頻和測驗列在一起,並將它們顯示爲可排序列表。

這兩種方法都是可行的,但是當我閱讀這個要求時,看起來你最好用STI。 STI是rails中本地支持的功能,允許您在同一個集合中查詢和操作不同類型的資源。