[SP-pm] Catalyst - fat controllers

Geovanny Junio :: eutsiv geovanny at eutsiv.com
Wed Jan 4 11:57:52 PST 2012


Olá pessoal, tudo bem?

Estou desenvolvendo uma app utilizando Catalyst + DBIx::Class, nas actions
que inclusão de dados tenho o seguinte:

sub insert :Local :Args(0) {
    my ( $self, $c ) = @_;

   my $param1 = $c->request->params->{param1} || 0;
   # até paramN

    my $rs = $c->model('DB::User');
    $rs->create({
         field1 => $param1
     });

    # varias tabelas complementares
    $rs = $c->model('DB::Userdetails1');
    $rs->create({
         field1 => $param2
    });

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

}

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.
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:

sub insert :Local :Args(0) {
    my ( $self, $c ) = @_;

    my $rs = $c->model('DB::User')->insert_user($c->request->params);

}

Existe uma abordagem mais inteligente para isso?

Grato,
--
Geovanny Junio
Consultor de Tecnologia
geovanny (at) eutsiv.com
+55 31 9422-8885
+55 31 2519-8603
www.eutsiv.com

Este e-mail pode conter informação privilegiada e confidencial. Se você não
é destinatário da
mensagem, por favor apague a mensagem e comunique-nos o fato de imediato.

This e-mail contains information that may be
privileged and confidential. If you are not the intended recipient, please
delete the e-mail and notify us immediately.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120104/c5d5b667/attachment.html>


More information about the SaoPaulo-pm mailing list