Salut Guirec, Draper est utile dés que tu as un truc spécifique à la présentation et qui a rien à faire dans ton modèle. Pour ce qui est de l'instancier dans le contrôleur, tu peux dire à ton décorateur d'utiliser les finders de ton modèle avec delegate_finders de mémoire. Du coup tu peux faire ArticleDecorator.find(params[:id]) et normalement ça respecte les OOPDR de Sandi.
En ce qui concerne les helpers effectivement ils sont censés servir le moins possible, si tu as une logique un peu complexe je te conseille d'utiliser Cells. Les presenters j'en ai pas vraiment vu l'utilité jusqu'à maintenant mais je suppose que ça dépend des contextes. Pour ton exemple de scope non c'est pas une bonne pratique vu que tu fais une requête depuis ta vue. Tu cherchais à faire quoi avec ça ? Normalement tu fais un @users = User.active_users dans ton contrôleur. Si c'est pour un bloc dans le style "Les utilisateurs connectés", encore une fois je te conseille Cells. Bonne journée, Simon Courtois On Tuesday 11 June 2013 at 17:03, Guirec Corbel wrote: > J'ai oublié de dire que, dans le cas des scopes, je parles de parties qui > concerne la présentation, utilisés par un menu par exemple. > > Une autre question, à partir de quel complexité faudrait t'il utiliser un > presenter. Si on à ça par exemple : > f.association :company, label_method: :company_name, value_method: :id, > include_blank: false > > Est ce que ça serait utile de faire une fonction pour ça? Où mettre cette > fonction si ça devient trop complexe? > > > Le 11 juin 2013 10:43, Guirec Corbel <[email protected] > (mailto:[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] (mailto:[email protected]) > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] > (mailto:[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] > (mailto:[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 .
