自定義繼承列

預設情況下,STI 模型類名儲存在名為 type 的列中。但是可以通過覆蓋基類中的 inheritance_column 值來更改其名稱。例如:

class User < ActiveRecord::Base
  self.inheritance_column = :entity_type # can be string as well
end

class Admin < User; end

在這種情況下遷移將如下所示:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :password
      t.string :entity_type

      t.timestamps
    end
  end
end

當你執行 Admin.create 時,此記錄將使用 entity_type = "Admin" 儲存在 users 表中