DBICのRの件


僕も最近ようやくDBICを触り始めました。まだ手探りな感じですが、とりあえずid:nekokakさんのとこはかなり参考にさせてもらいながら、いろいろ試し中です。(まだ新しいWeb+DBは見てませんすいません)


そんで、表題の件なんですが。
http://d.hatena.ne.jp/nekokak/20061227/1167210571

結局、ResultSetクラスにメソッド生やしちゃうと、全部のSchema(テーブル)でそのメソッドが共有されちゃうことになって、あんまりうれしくないケースもあったりすると思うんですが。。。そんなことないですか?そうですか。


てなわけで、ワタクシとしては

案2:自分でResultSetのクラスを作成する。

かなあ、という結論にいたりました。


んで、テーブルごとに MyApp::Schema::User に対して MyApp::Schema::User::ResultSet って作っておいて、Schemaをロードするクラス(ちなみに DBIC::Schema::Loader 利用)の中で、

my $resultset_class = "$class?::ResultSet";
if ( $resultset_class->use ) {
    $class->resultset_class($resultset_class);
}

こんなふうにするといい感じかなー、と。
まあ、ResultSetクラスの位置はここが適切なのか、やや疑問もないではありませんが。。。