CatはしらんけどSledgeなら
http://kerolin.jspeed.jp/Computer/Linux/catalyst070116.html
ユーザ情報が取れなかったらリダイレクトとかしてませんが
私の場合ならこんな感じで書くかもしれません。
$c->stach->{bookmark_ite} = $c->model('Bookmark')->search( { # something.. 'user_id' => $user->id, }, { prefetch => 'user_id', join => 'user_id', } );
状況によりけりでしょうかね。
基本コントローラーでRSを作りまくってstashにぶち込みまくって
Viewの方で実際にクエリを実行する感じですね。
例にあった、
my $user = $c->model('PblDB::User')->search({name => $username})->first; defined($user)
とかってSledgeだったらバリデーションのフェーズで確認するから
三項演算子でもにゅもにゅすることはすくないかな。
Catはよくわかりませんけど。
あと、なんとなくなんですが、DBICで
->model('PblDB::User')->search({name => $username})->first;
と書くよりも
->model('PblDB::User')->single({name => $username});
と、書くほうがスッキリする気がする。
あまりつかってませんけども。
まあ、コントローラー内で全部処理してハッシュをTTにってのは無しですね。