Olá pessoal, tudo bem?<div><br></div><div>Estou desenvolvendo uma app utilizando Catalyst + DBIx::Class, nas actions que inclusão de dados tenho o seguinte:</div><div><br></div><div>sub insert :Local :Args(0) {</div><div>    my ( $self, $c ) = @_;</div>

<div><br></div><div>   my $param1 = $c->request->params->{param1} || 0;</div><div>   # até paramN</div><div><br></div><div>    my $rs = $c->model('DB::User');</div><div>    $rs->create({</div><div>
         field1 => $param1</div>
<div>     });</div><div><br></div><div><div>    # varias tabelas complementares</div><div>    $rs = $c->model('DB::Userdetails1');</div><div>    $rs->create({</div><div>         field1 => $param2</div><div>

    });</div></div><div><br></div><div>    # varias tabelas complementares</div><div>    $rs = $c->model('DB::UserdetailsN');</div><div>    $rs->create({</div><div>         field1 => $paramN</div><div>    });</div>

<div><br></div><div>}</div><div><br></div><div>Resumindo: basicamente recebo dados e salvo. Mas em algumas actions que tenho uma quantidade enorme de parâmetros e tabelas complementares, o código da action fica grande, e estou sentindo que não é legal, pois vai contra a ideia de controllers magros. </div>
<div>A minha ideia até o momento é adicionar uma sub ao schema da tabela principal (User), onde eu passe todos os dados recebidos pela action via hash, e através dela eu adicionar os dados às tabelas auxiliares (Userdetails1, UserdetailsN), seria algo mais ou menos assim:</div>
<div><br></div><div><div>sub insert :Local :Args(0) {</div><div>    my ( $self, $c ) = @_;</div><div><br></div><div>    my $rs = $c->model('DB::User')->insert_user($c->request->params);</div></div><div>
<br></div><div>}</div><div><br></div><div>Existe uma abordagem mais inteligente para isso?</div>
<div><br></div><div>Grato,</div><div>--<br>Geovanny Junio<br>Consultor de Tecnologia<br>geovanny (at) <a href="http://eutsiv.com" target="_blank">eutsiv.com</a><br><a href="tel:%2B55%2031%209422-8885" value="+553194228885" target="_blank">+55 31 9422-8885</a><br>
<a href="tel:%2B55%2031%202519-8603" value="+553125198603" target="_blank">+55 31 2519-8603</a><br><a href="http://www.eutsiv.com" target="_blank">www.eutsiv.com</a><br>
<br>Este e-mail pode conter informação privilegiada e confidencial. Se você não é destinatário da<br>mensagem, por favor apague a mensagem e comunique-nos o fato de imediato.<br><br>This e-mail contains information that may be<br>

privileged and confidential. If you are not the intended recipient, please<br>delete the e-mail and notify us immediately.<br>
</div>