[英]How do I model a polymorphic has_many relationship in Rails 3
想象一下,我有一個名為Course
的模型,每個課程都有has_many Modules
。 但是,我希望模塊具有不同的類型范圍。
例如, Module
模型將是父類,並且將具有兩個字段:在所有子類型之間通用的title
和description
。
現在,我需要Course
能夠具有任意數量的Slideshow
, Video
, Image
, Text
實例,但是必須通過Course#modules
檢索它們。
考慮每個子類類型都有其自己的屬性,例如Video
可以具有url
字段,而Text
可以具有contents
。
建立這種關聯的正確方法是什么?
可能有點晚了,但是在您的應用程序中有一個名為“模塊”的模型會導致名稱沖突的各種問題……
我認為有2種選擇(可能是組合的):
使用多態關聯(有關示例,請參見“多態關聯” )。 您的遷移應如下所示:
create_table :courses do |t| t.references :modules, :polymorphic => {:default => 'Text'} end
使用單表繼承:在這里,您的模型是從一個公共基類中繼承而來的,而這只能通過一個包含所有模型類所有列的表在數據庫上實現。
看一下有關2的“ Alex Westholms博客” ,並進行比較。 我認為您應該使用多態關聯,因為您的模塊具有許多不同的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.