Rails Polymorphic
如何使用 Polymorphic Associations 多型關聯。 1. 使用情境 想像你正在設計「評論」功能的資料庫架構,使用者可以在幾乎任何地方留下評論,例如產品、貼文、活動等,此時你會想到使用一對多關係,為這三個 Model 設計出ProductComment、PostComment、EventComment,但此時你發現這三個資料表的欄位幾乎一模一樣,如果分成三個 Model 顯得相當冗餘,此種情景就相當適合使用Polymorphic 多型關聯來簡化資料庫的設計,使用Polymophic可以使模型在同一個關聯上屬於多個模型。 2. 使用方法 同樣以Comment這個model舉例,建立Polymorphic model的指令: rails g model Comment content:text commentable:references{polymorphic} 觀察一下產生的 migration 檔: # 產生的migration檔案,references版本 class CreateComments < ActiveRecord::Migration[7.0] def change create_table :comments do |t| t.text :content t.references :commentable, polymorphic: true, null: false t.timestamps end end end # 產生的migration檔案,較複雜的版本 class CreateComments < ActiveRecord::Migration[7.0] def change create_table :comments do |t| t.string :name t.bigint :commentable_id t.string :commentable_type t.timestamps end add_index :comments, [:commentable_type, :commentable_id] end end 接著執行rails db:migrate在資料庫產生資料表與更新schema。...