自定义继承列

默认情况下,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 表中