自定义继承列
默认情况下,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 表中