== Rails 3.1で単一テーブル継承とnamespaceを使ったサンプル
Petモデルを継承したCat::CatモデルとDog::DogモデルのCRUDアプリケーションのサンプル
=== 実装をためしてみて気づいた点など
1.宣言上は、Cat/DogクラスがPetクラスを継承しているが、属性の数から考えると、PetがCat/Dogを多重継承しているようなイメージで気持ち悪い。
2.type属性はPet.new(params[:pet])に含まれない。直接設定しなければならない。validates :incudeからnilを除外するとPetのインスタンスを永続化できないようにできる。
2.モデルに永続化したい属性を追加するには、petsテーブルへの追加になる。NOT NULL制約等をテーブルに追加すると、
継承したクラスすべてが影響を受けるため、子クラスのみの制約は、アプリケーションレイヤでのみ実装する。
validatesが親クラスと子クラスに散らばる可能性があるので、
3.xxx_pathヘルパーメソッドが名前空間付きになるので、やや面倒。
4.表示を"Cat::Cat"ではなく、"Cat"のようにしたければ、application_helperに相互変換のメソッドを用意する。