Dans ces cas là, j'essaye d'avoir une approche un peu Lean, même si c'est
pas super top du point de vue de l'ingéniérie logicielle pure.

Si c'est une fonction qui n'a pas besoin de données purement liés aux
Controller (genre la locale, les routes, etc), je le mets dans le Model. Si
non, je la met dans un helper. Dès que ça dépasse 3 ou 4 fonctions,
j'essaye d'en faire un module. Si tu commences à avoir beaucoup (plus que
10 par exemple) de fonctions que tu ne sais plus où mettre, c'est le temps
de faire appel au pattern Presenter.

Bon en ce moment, je bosse sur une application où les gens précédents ont
décidé d'utiliser Mustache. Soit. Je trouvais ça drôle au début, mais c'est
rapidement devenu le bordel puisque tu dois passer des Hash aux templates
Mustache. Et pour remplir une page un peu complexe, tes Hash peuvent
devenir rapidement très très gros. Dans ce cas là, j'ai décidé de passer
par le combo draper/rabl pour me faciliter la tâche et retrouver un peu de
lisibilité dans le code (pour ceux qui se posent la question, j'utilise
rabl pour construire des Hash, pas pour nécessairement exposer une API
directement).

yk






Le 11 juin 2013 16:43, Guirec Corbel <[email protected]> a écrit :

> Bonjour,
>
> Aujourd'hui je pose une question que je trouve un peu basique mais je suis
> totalement perdu : Quand utiliser draper, des presenters, des helpers, des
> scopes ou des partials?
>
> J'ai lu le post de Philippe Creux :
> http://reverbhq.com/blog/2012/08/building-web-apps-with-activeadmin/ et
> je suis d'accord avec lui. On devrait utiliser draper quand on a besoin
> d'une action simple agissant sur un modèle. Un presenter contient une
> logique plus complexe agissant sur plusieurs modèles.
>
> J'aime bien la méthode de Ryan Bates présentée ici :
> http://railscasts.com/episodes/287-presenters-from-scratch, le problème,
> pour moi, c'est qui créer une variable "user_presenter" qui délègue des
> fonctions à sont modèle "user". Si l'on a beaucoup d'attributs ça peut
> devenir compliqué. Je pense que l'on ne devrait pas pour autant utiliser
> des fois "user_presenter" et d'autres fois "@user".
>
> Je n'aime pas non plus le fait d'instancier un objet "@presenter" dans le
> contrôleur. Ça viole une des lois de Sandi Metz.
>
> En ce qui concerne les partials, ça sert à décomposé de gros bloques de
> code dans de plus petits.
>
> Je m'interroge au niveau des scopes sur le fait d'appeler une fonction
> d'un modèle dans une vue. Par exemple, si on fait ceci :
>
> <% User.active_users.each do |user| %>
>   ....
> <% end %>
>
> Je ne suis pas certain que ça soit une bonne pratique, qu'en pensez-vous?
>
> Quant aux helpers... ils servent à créer du html qui ne se sert d'aucun
> modèle?
>
> Quel est votre avis là dessus? Quels sont vos techniques? Avez vous des
> bons exemples?
>
> Bye!
>
> --
> --
> Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
> Google Groups.
> Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
> [email protected]
> Pour résilier votre abonnement envoyez un e-mail à l'adresse
> [email protected]
> ---
> Vous recevez ce message, car vous êtes abonné au groupe Google
> Groupes Railsfrance.
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
> [email protected].
> Pour plus d'options, visitez le site
> https://groups.google.com/groups/opt_out .
>
>
>

-- 
-- 
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
--- 
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes 
Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .


Répondre à