Ruby Forum Rails France > Ressources imbriquées

Posted by Guillaume Betous (Guest)
on 04.05.2008 22:37
(Received via mailing list)
Bonjour,

Je suis en train d'utiliser les ressources imbriquées, et en fait...
je me demande à quoi ça sert !

En effet, dans l'exemple :

map.resources :clients do |client|
  client.resources :commandes
end

Mis à part une jolie URL REST, ça ne sert pas à grand chose, puisque
l'id des commandes reste unique, et donc une commande restera
identifiable par son simple id...

Me trompé-je ?

gUI

--
Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/
Posted by Jean-Baptiste Escoyez (Guest)
on 05.05.2008 13:42
(Received via mailing list)
Bonjour Guillaume,

On 04 May 2008, at 22:36, Guillaume Betous wrote:

> En effet, dans l'exemple :
>
> map.resources :clients do |client|
> client.resources :commandes
> end
>
> Mis à part une jolie URL REST, ça ne sert pas à grand chose, puisque
> l'id des commandes reste unique, et donc une commande restera
> identifiable par son simple id...

Effectivement si tu veux voir une seule commande, tu n'as pas *besoin*
d'imbriquer tes ressources.
Maintenant, imaginons que tu veuilles voir toutes les commandes d'un
client. A ce moment là, ça devient intéressant d'avoir des ressources
imbriquées (car tu auras besoin de l'id du client).

Ou encore, Imaginons que tu veuilles donner accès aux commandes des
*tes* clients uniquement. Tu auras également besoin de l'id du client
pour vérifier qu'il fait bien partie de la liste de tes clients.

Mais si tu utilise REST, c'est probablement *aussi* pour avoir des
jolies URLs qui sont facilement utilisable le jour où tu veux créer
une API. Non?

--
Jean-Baptiste Escoyez
Belighted.com | Web 2.0 Consulting & Training
Email : jbe@belighted.com | Phone: +32 486 377593
Posted by Guillaume Betous (Guest)
on 05.05.2008 21:36
(Received via mailing list)
oui, c'est vrai que ça permet de faire des recherches restreintes, un
peu comme un "with_scope"...

je me rends compte qu'on le ferait à tous bouts de champs en fait (-:

gUI

--
Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/
Posted by Jean-Baptiste Escoyez (Guest)
on 05.05.2008 23:47
(Received via mailing list)
On 05 May 2008, at 21:35, Guillaume Betous wrote:

>
> oui, c'est vrai que ça permet de faire des recherches restreintes, un
> peu comme un "with_scope"...
>
> je me rends compte qu'on le ferait à tous bouts de champs en fait (-:

Justement, il ne faut pas l'utiliser à tout bout de champ.
Pour faire des recherches, on utilise des paramètres pas des
ressources imbriquées.

Je te vois alors revenir avec ta première question (à quoi ça sert
alors).

THEORIE : REST est un style architectural. En autre, il t'aide à
structurer les données que ton application web présente aux
utilisateurs (plus particulièrement aux utilisateurs qui consommeront
les ressources (données) de ton appli via son API (si tu en fait une).

PRATIQUE :
- Si tu as une ressource blog et que tu veux afficher les commentaires
d'un post donné tu créera une ressource "comment" imbriquée dans
"post" (post/1/comments).
- Si tu veux chercher parmi tes post ceux du mois de mai tu passera à
ta liste de ressource "post" le paramètre "month=may" (post?month=may).

Dans ton contrôleur, les deux paramètres sont récupérables dans le
hash params. Là, tu en fait ce que tu veux.

Qui a dit que REST était évident ? :)

Bonne nuit,

Jean-Baptiste
--
Jean-Baptiste Escoyez
Belighted.com | Web 2.0 Consulting & Training
Email : jbe@belighted.com | Phone: +32 486 377593