Le 26/05/07, Cyril Mougel <[EMAIL PROTECTED]> a écrit :
>
> Bonjour,
Bonjour,
Dans une application Rails que je suis en train de créer, j'ai un blocage.
> Je
> ne sais pas trop si ce blocage est une limitation de mon esprit ou de
> rails.
> Voici donc mon problème.
>
> J'ai 3 tables :
> - Acteurs
> - Films
> - Roles
>
> Dans chacune d'elle, il y a un champs nom. Mais voilà, je voudrais lier
> ces 3
> tables entre elle mais de façon unique. Ainsi en réfléchissant de manière
> purement SQL, je voulais créer une table comme suit :
>
> CREATE TABLE acteur_film_role {
> id INTEGER,
> acteur_id INTEGER,
> film_id INTEGER,
> role_id INTEGER
> }
Mais avec Rails, impossible de voir comment le schématiser à part en créant
> un nouvel objet model qui schématisera cette nouvelle table composé de
> belongs_to et has_many Mais cela m'imposera de créer cette objet à
> chaque fois pour faire une liaison. Car en effet, le
> has_and_belongs_to_many, ne me permet
> de faire la liaison avec une base intermédiaire que de deux champs, pas
> trois.
>
> En réfléchissant au problème, je n'ai pas non plus vu d'autre moyen
> conceptuel
> pour faire cette liaison à part comme je l'ai fait précédemment. Ce
> nouveau
> moyen pourrait peut-être me résoudre mon problème.
En fait dans la logique rails la méthode est plutôt d'avoir dans la table
roles un acteur_id et film_id.
Ensuite passer par une relation :througth sur les models acteur et film qui
permettra de faire des film.roles et des acteur.films sans passé par cette
table triple relation.
Pour la syntaxe de :througth tu trouvera facilement de la doc dans les
archives de la ML et sur le net.
PS: J'ai répondu sur ton blog pour le probéme d'ipv6 ;)
Je suis ouvert à toutes propositions.
>
> Merci
>
>
> --
> Cyril Mougel
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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]
-~----------~----~----~----~------~----~------~--~---