首先很久沒有寫過 markdown垂攘, 真是不進(jìn)則退,還好 google 了下淤刃,要感謝這篇文章 獻(xiàn)給寫作者的 Markdown 新手指南
多態(tài)關(guān)聯(lián)的使用場景
假如一個網(wǎng)站可以展示圖片和文章晒他,現(xiàn)在要對兩者加入評論功能,我們可能會想到各自添加一張關(guān)聯(lián)表逸贾,image_comments 和 post_comments 仪芒,但是這兩張表除了關(guān)聯(lián)字段,其他幾乎都是相同的耕陷。
在微信開發(fā)的時候掂名,有個自動回復(fù)功能和帶參數(shù)二維碼的功能。當(dāng)用戶給公眾號發(fā)送了消息哟沫,觸發(fā)了一條自動回復(fù)規(guī)則饺蔑,系統(tǒng)就會自動調(diào)用相對應(yīng)的回復(fù)內(nèi)容給用戶;當(dāng)用戶掃描二維碼時嗜诀,同樣可以調(diào)用一個回復(fù)內(nèi)容給用戶猾警,這里兩者的回復(fù)內(nèi)容基本是相同的結(jié)構(gòu)发皿。
等等 這樣類似的關(guān)系拂蝎。
多態(tài)關(guān)聯(lián)的用法
以評論功能為例,Rails 里是這么做的玄货,辭窮悼泌,直接上代碼吧,非真實代碼隘世,我想象的。
class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
end
class Post < ActiveRecord::Base
has_many :comments, as: :commentable
end
class Image < ActiveRecord::Base
has_many :comments, as: :commentable
end
我們需要一張 comments 表能關(guān)聯(lián) posts 表或 images 表
class CreateComments < ActiveRecord::Migration
def change
create_table :products do |t|
t.integer :user_id
t.text :content
t.integer :commentable_id
t.string :commentable_type
t.timestamps null: false
end
add_index :comments, :commentable_id
end
end
基本奏是這樣丙者。然后就更正常的關(guān)聯(lián)表一樣使用就可以了,正常使用是怎么使用永票,可以參考這里 Polymorphic associations 滥沫。奏是這樣键俱。