Railsのカラム名にtypeを指定してはいけない理由
STI(Single Table Inheritance)
の仕組みで利用するため。
STI
の実装方法について調べていると、
どうもクラスを継承させて、継承元のモデルにtype
カラムを追加しているだけ。
なにか情報が不足しているのではないかと疑ってしまったけど、
type
カラムがあるとSTI
を利用しているかRails側で判定してくれるのね。
inheritance_column
active_record
のmodel_schema.rb
内でinheritance_column
をtype
で定義している。
追記
type
カラムのStringをActiveSupport::Dependencies.constantize
を使って該当するクラス(つまり継承先)を返してくれる仕組み。
参考情報
- ActiveRecord::ModelSchema::ClassMethods
- rails / activerecord / lib / active_record / inheritance.rb
- rails / activerecord / lib / active_record / model_schema.rb
実践 Rails ―強力なWebアプリケーションをすばやく構築するテクニック
- 作者: Brad Ediger,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/10/27
- メディア: 大型本
- 購入: 7人 クリック: 90回
- この商品を含むブログ (43件) を見る