Railsのカラム名にtypeを指定してはいけない理由

STI(Single Table Inheritance)の仕組みで利用するため。

STIの実装方法について調べていると、 どうもクラスを継承させて、継承元のモデルにtypeカラムを追加しているだけ。

なにか情報が不足しているのではないかと疑ってしまったけど、 typeカラムがあるとSTIを利用しているかRails側で判定してくれるのね。

inheritance_column

active_recordmodel_schema.rb内でinheritance_columntypeで定義している。

追記

typeカラムのStringをActiveSupport::Dependencies.constantizeを使って該当するクラス(つまり継承先)を返してくれる仕組み。

参考情報