無料会員と有料会員の違いのように、"似たような"データがある場合にどうやってそれを整理してゆくか。
Rails では単一テーブル継承をサポートしていて考え方としては、データテーブルは一つで、そこにいくつかの種類のモデルクラスがくっついてゆくようなイメージ。
事例:http://www.interq.or.jp/engineer/ishikura/sb/log/eid46.html
など。
例えば、Digg というサイトでは、ほぼ同じ内容のニュース項目が、“発表された”表ページと、“まだ日の目を見ていない補欠ニュース”の裏ページに分類されている。評価が高くなると表ページに移動する。
クラスを一つにして、パラメータを切り替えるというアイデアも悪くはないが、
$発表されたニュース->findAll();
$未発表ニュース->findall();
と書きたい、というアイデアもある。これをやりすぎるとどんどん複雑になってゆくので適当なところでやめたほうがよいと思うが、"CakePHPでもこれができる"ようだ、ということを知っておくのはよいと思う。
Single Table Inheritance の効用書き。
CakePHP で実現する方法。
フレームワークで想定している書き方ではないように思うので、スマートな解決方法ではないと思いますが、知識としては知っておいてよいと思います。CakePHP 2.0 ではこのあたり、どうなるんでしょうか……。