簡體   English   中英

如何在Rails 3中建模多態has_many關系

[英]How do I model a polymorphic has_many relationship in Rails 3

想象一下,我有一個名為Course的模型,每個課程都有has_many Modules 但是,我希望模塊具有不同的類型范圍。

例如, Module模型將是父類,並且將具有兩個字段:在所有子類型之間通用的titledescription

現在,我需要Course能夠具有任意數量的SlideshowVideoImageText實例,但是必須通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM