Polymorphic Assoiciaion
說明
透過 polymorphic association,可以讓一個 model 同時屬於數個 model。
使用情境
假設網站裡有 Article、Photo、Event 三個 model,都希望可以讓使用者加入 comment,因此可能需要三種 comment model。
若設定 polymorphic association,則可讓一個 Comment model 同時為上述三個 model 加入 comment。
使用方式
Step 1. 建立 Comment model > 一開始必須新增 model,裡面包含 #{modelname}ableid 是整數,表示哪些 record 有關連到這個 comment; > #{modelname}abletype 儲存關連到 comment 的 model name。
rails generate model Comment content:text commentable_id:integer commentable_type:string
Step 2. 設定 Common model 有 polymorphic association 關係
class Comment < ActiceRecord::Base
belongs_to :commentable, :polymorphic => true
end
Step 3. 為每個需要 comment 的 model 建立 polymorphic association 到 Comment model,透過 commentable
class Article < ActiceRecord::Base
has_many :comments, :as => :commentalbe
end