Regarde cette article :
http://robots.thoughtbot.com/activemodel-form-objects. À la fin il y a un
exemple ou tu vois qu'il envoi des courriels, il fait ces logs, etc... T'en
pense quoi?


Le 2 avril 2014 06:47, Florian Dutey <[email protected]> a écrit :

> Si je me base sur mon experience Java, un service devrait etre appele
> comme ceci:
>
> dummy_object_service.save(dummy_object)
>
> Il n'y a aucune raison qu'une instance de service soit liee a une instance
> d'un objet en particulier
>
> Ton form est la pour valider ton modele, il ne devrait pas faire la
> sauvegarde
>
> Donc, a mon sens, tu devrais avoir un truc du genre
>
> form = UserForm.new(params[:user])
>
> if form.valid?
>   # static
>   UserService.save(form.object)
>
>   # instance
>   UserService.get.save(form.object)
> end
>
> static ou instance... je ne le sais... je sais pas comment se comportent
> les services en ruby
> Je trouve tres bizarre le concept d'un service qui sauve un form, un
> service devrait toujours travailler sur les objets qu'il est cense manager,
> pas leur form (genre pour le delete, tu crees un form que tu files au
> service?)
>
> =====
>
> ou est-ce le formulaire ou le service devrait savoir comment créer les
> associations. Est-ce le rôle d'un autre type d'objet?
>
> C'est difficile de se retrouver dans ces concepts.
>
> Bienvenue dans l'enfer des services qui doivent appeler d'autres services
> (surtout si il y a du IOC par dessus) et qui transforment la soit disant
> super reusabilite de tout ca en un sac de noeuds insupportable.
>
> Mais dans ton exemple super simple, je ferais tout simplement:
>
> def user
>   group.users.new # or find
> end
>
> Et si tu veux ajouter un user existant a un groupe existant, alors tu ne
> travailles plus sur une isntance de user ou group mais sur une instance de
> l'association entre les 2
> Donc ton form et ton service a utiliser doivent etre ceux de l'association.
>
>
> Le 1 avril 2014 17:22, Guirec Corbel <[email protected]> a écrit :
>
>> Bonjour à tous,
>>
>> J'aimerai avoir votre opinion sur le rôle des form objects, services
>> objects et du controller. À votre avis, est-ce le form object qui va créer
>> un service et l'appeler ou est-ce que le controller doit créer un service
>> avec le form object en paramêtre? Je m'explique avec du code :
>>
>> Est-ce que ça doit être ça :
>>
>> class MyController < ApplicationController
>>   def create
>>     MyForm.new(params).save
>>   end
>> end
>>
>> class MyForm
>>   def save
>>     Service.new(self).save
>>   end
>> end
>>
>> ou
>>
>> class MyController < ApplicationController
>>   def create
>>     form = MyForm.new(params)
>>     Service.new(form).save
>>   end
>> end
>>
>>
>> Autre question : Est-ce le rôle du controller de construire les modèle ou
>> à l'un des deux autres. Imaginons un formulaire de création d'utilisateur
>> avec un groupe. Est-ce que le "bon" code serait comme ceci :
>>
>> class MyController < ApplicationController
>>   def create
>>     form = MyForm.new(user: user, group: group)
>>     form.attributes = params[:user]
>>     form.save
>>   end
>>
>>    def user
>>         User.new # or find
>>    end
>>
>>    def group
>>      Group.find(params[:group_id])
>>    end
>> end
>>
>> ou est-ce le formulaire ou le service devrait savoir comment créer les
>> associations. Est-ce le rôle d'un autre type d'objet?
>>
>> C'est difficile de se retrouver dans ces concepts.
>>
>>
>> --
>> --
>> 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 railsfrance+unsubscribe@
>> googlegroups.com.
>> Pour plus d'options, visitez le site https://groups.google.com/d/optout .
>>
>
>  --
> --
> 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 obtenir davantage d'options, consultez la page
> https://groups.google.com/d/optout.
>

-- 
-- 
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/d/optout .

Répondre à