自定義繼承列
預設情況下,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 表中