DBにある1つのテーブルを、複数のモデルで共有利用すること。 DBテーブル名と同じクラス(スーパークラス)を作成し、そのスーパークラスを継承するサブクラスを作成する。使用するカラム名はスーパークラス、サブクラスともに同じ。(同じテーブルに紐づくから当然)
typeというカラム名は避けた方が良い。
継承元のテーブルにはtypeカラムを実装しておく必要がある。 どういうことかと言うと、DB上にはTaxonomyテーブルしか存在しないので、category、tag、authorのデータはtaxonomiesテーブルの中に全部ごっちゃで入っていて、どのクラスのデータかを識別するためにtypeカラムを使うって感じ。 そこで、typeカラムというRailsが標準で用意しているカラムを使用すれば、ActiveRecordがいい感じにtypeにサブクラス名を入れてくれるのです。
上記の点から、普通のカラムとしてtypeカラムを使用するのは良くない。なぜならSTIの機能と判断してしまうから。タイプを表すカラムを使いたいならuser_typeみたいにする必要がある。