MVC の実現の仕方(私の場合)
以下のエントリを拝見させて頂いて、思った事のメモ。
MVCのモデルはDBじゃなくてもいいんだよ - D-6 相変わらず根無し
個人差があるかとは思いますが、Catalyst を使っていると、 C のテストを書く行為を、私は、そんなに苦に感じない。ただ、C は URI リソースと M を繋ぐラッパと割り切り、複雑なビジネスロジックは M に押し付ける方が、コードがスッキリするし、M 自体を汎用的にできそう。
MVCのモデルはDBじゃなくてもいいんだよ - D-6 相変わらず根無し
じゃあ元々のブクマコメントのModel::DBICはどうすんだよ、いらないのかよ、みたいなところに行き着くかと思うのだが、そこはそれ、モデルに「格納先」を指定するのにDBを抽象化したModel::DBICを使ってやる、っていう手もある
my $c = shift; # Catalyst的なcontextがあると仮定します MyApp::Model::BlogEntry->create({ storage => $c->model('DBIC::BlogStorageSchema'), blog => $blog, title => $entry_title, content => $entry_content });これで全く問題なくDBICの良いところを使える。
Catalyst::Model::Adaptor でラップして MyApp::Model::BlogEntry を作り、prepare_arguments を下記のようにすれば・・・
sub prepare_arguments { my ($self, $app) = @_; return { storage => $app->model('DBIC::BlogStorageSchema'), map {$_ => $app->req->param($_)} qw(blog title content), }; }
C の中で実際に使う際には
$c->model('BlogEntry')->create;
で行けるかな?