Catalyst+CDBIでinsertはcreateメソッド呼び出すから、更新はupdateメソッドだろって勘違いしててデータ更新だけがうまくうごかないプログラムができてしまい、
キャッシュか?キャッシュなのか?もしや。
なんつって、しばらく悩んだ。
で、Shibuya Perl Mongersの Wiki作りの資料見ててやっとぼけてたことに気づく。
sub save : Global {
my ( $self, $c ) = @_;
my $title = $c->req->params->{'title'};
my $contents = $c->req->params->{'contents'};
unless(my $wiki = MyWiki::M::CDBI::Wiki->retrieve(title => $title)){
MyWiki::M::CDBI::Wiki->create({title => $title, contents => $contents});
}else{
$wiki->contents($contents);
}
$c->res->redirect($c->config->{base} . '?' . $title);
}
O/Rマッピングで、オブジェクトとして扱ってんだから更新はセットすればいいだけじゃん。
いま思うと、そりゃそうだろうって感じだが。CDBIちゃんと理解しておかないといけなさげだな。