Bonjour,
J’ai besoin de développer une relation polymorphique et de stocker le
type de la table de référence et l’id dans deux tables différentes
(comme ca, ca ne doit pas être très clair).
Voilà l’exemple :
table PERSONNES
table VILLES
table PAYS
table MANDATS
- id
- nom
- lieu_type = VILLE ou PAYS
table ELUS
- id
- personne_id
- mandat_id
- lieu_id -> fait référence à la table VILLES ou PAYS en fonction du
lieu_type du mandat associé
Est-il possible de mettre ca en place ?
Si non, quelle solution voyez-vous pour obtenir un résultat similaire ?
Merci à tous
Adrien
Bonjour,
C’est possible, mais est tu sur d’avoir besoin de la table Elus ?
avec personnes, villes, pays et mandats pour faire la jointure tu
devrais pourvoir t’en sortir, non ?
Le 28 juin 09 à 08:42, Adrien N. a écrit :
Oui j’ai besoin de la table ELUS car une personne peut avoir plusieurs
mandats, j’ajoute aussi dans la table ELUS un champ booléen ancien
qui
indique si c’est un renouvelement du mandat ou pas.
Quelqu’un peut-il me dire comment réaliser ca en rails, malgrè mes
recherches je ne trouve rien :s Je lis l’anglais mais ne cherche
peut-être pas bien.
Oui j’ai besoin de la table ELUS car une personne peut avoir plusieurs
mandats, j’ajoute aussi dans la table ELUS un champ booléen ancien
qui
indique si c’est un renouvelement du mandat ou pas.
D’après ce que j’en comprends, ce n’est pas un argument. Si dans ta
table
mandat tu ajoutes un personne_id, tu as donc une relation personne
has_many
mandats et mandats belongs-o personne, une personne pourra avoir
plusieurs
mandats sans soucis. de plus dans cette meme table mandats tu peux
rajouter
ton champ ‘ancien’.
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/
c’est un autre Guillaume qui avait posté dans un premier temps (-;
peut-il y avoir plus d’une personne sur un meme mandat ?
gUI
Le 28 juin 2009 13:39, Adrien N. [email protected] a écrit
:
Ok je n’avais pas bien compris ce que tu voulais dire, alors non cela ne
me va pas car MANDATS sert à lister les mandats possibles existants. Il
n’y a pas forcément une personne élue pour chaque mandat, certains ne
seront peut être pas utilisés.
Posted via http://www.ruby-forum.com/.
–
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/
Guillaume B. wrote:
c’est un autre Guillaume qui avait posté dans un premier temps (-;
oups je n’avais pas vu, désolé
peut-il y avoir plus d’une personne sur un meme mandat ?
oui il peut y avoir plusieurs personne pour un même mandat
bon je donne des exemples pour expliciter un peu tout ca :
ce que j’ai prévu :
- mandat vas contenir des enregistrement du genre
(0,maire,villes)
(1,conseiller municipal,villes)
(2,ministre,pays)
(3,président,pays)
- elu va contenir des enregistrement du genre :
(0,jacques machin,maire,poitiers)
(1,michel ducoin,maire,chatellerault)
(2,jacques vigneret,conseiller municipal,angouleme)
(3,monique dufour,ministre,france)
(4,martine dugalet,presidente,irlande)
NB: j’ai remplacé personne_id,mandat_id,ville_id par
personne.nom,mandat.nom,ville.nom
la table mandat me sert à obtenir la liste des mandats possibles pour
les afficher dans un formulaire où l’on choisira les mandats de chaque
personne.
donc les solutions que je vois sont :
- ce que j’ai dit premièrement
- ajouter (dupliquer) type_lieu dans la table elus (c’est peut être le
plus simple même si ce n’est pas très propre?)
- grouper les tables elus et mandats :
MANDATS
- id
- nom
- lieu_id
- lieu_type
- personne_id
auxquels cas je stockerai la liste des mandats possibles en créant des
mandats associés à aucune personne (ce sera la liste des mandats que
j’affiche dans le formulaire)
Une autre précision un peu hors sujet :
Il faudrait aussi que je laisse la possibilité à l’utilisateur d’ajouter
des mandats et des types de lieu (donc de créer une nouvelle table de
lieu par exemple DEPARTEMENTS), je ne sais pas si je pourrai y arriver
sans que l’on ai à modifier du code mais si oui, ma solution devrait
être celle qui permet de faire ca.
J’espère que j’ai été clair.
Merci pour votre aide !
adrien
oui il peut y avoir plusieurs personne pour un même mandat
ok, je vois. je suis pas du tout specialiste du polmorphisme, je pense
que
ce que j’aurais fait à ta place c’est tout simplement de mettre 2 id
dans
ELU, par exemple pays_id et ville_id, et selon le mandat, je remplis
l’un ou
l’autre (et j’utilise l’un ou l’autre).
mais je suis pas sur que ce soit la solution la plus élégante.
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/
Ok je n’avais pas bien compris ce que tu voulais dire, alors non cela ne
me va pas car MANDATS sert à lister les mandats possibles existants. Il
n’y a pas forcément une personne élue pour chaque mandat, certains ne
seront peut être pas utilisés.
hum, merci mais non cette solution ne me convient pas, c’est trop moche
je préfère encore dupliquer type_lieu dans les tables MANDATS et
ELUS
si quelqu’un d’autre pouvez me conseiller, j’aimerai développer ca le
plus proprement possible !
adrien
Salut !
1ère remarque : tu aimerais faire cela le plus proprement possible
comme tu le dis, donc déjà n’utilise jamais de variables ou de noms de
tables en Français dans tes logiciels, et cela quel que soit ton
logiciel.
2ème remarque : a mon avis ça serait très simple à implémenter en
Rails si tes modèles City et Country découlent en STI d’un modèle
Place. D’ailleurs en regardant ton schéma ils ont pour l’instant les
mêmes attributs.
Nicolas.
Le 28 juin 2009 08:42, Adrien N.[email protected] a écrit :
c’est peut être pas très joli mais ca ne change quand même pas grand
chose ?
c’est surtout très piégeux, Rails considérant les singluiers et pluriels
Ã
l’anglaise.
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/
Nicolas B. wrote:
Salut !
1�re remarque : tu aimerais faire cela le plus proprement possible
comme tu le dis, donc d�j� n’utilise jamais de variables ou de noms de
tables en Fran�ais dans tes logiciels, et cela quel que soit ton
logiciel.
je vais y penser, mais ca me semble fastidieux de chercher tous les
termes en anglais, surtout que cette aplication ne sera jamais traduite.
c’est peut être pas très joli mais ca ne change quand même pas grand
chose ?
2�me remarque : a mon avis �a serait tr�s simple � impl�menter en
Rails si tes mod�les City et Country d�coulent en STI d’un mod�le
Place. D’ailleurs en regardant ton sch�ma ils ont pour l’instant les
m�mes attributs.
C’est vrai mais j’ai beaucoup simplifié le schéma, en fait pour Ville il
y aura comme information l’adresse de la mairie, telephone, email,etc…
autant d’information qui sont inutiles dans la table pays.
Je peux quand même faire une table lieu polymorphique :
LIEUX
- id
- lieu_type
- lieu_id
qui renverrai vers les différentes tables de lieu mais c’est moche aussi
non ? sachant qu’il y a beaucoup de table de lieu
(pays,regions,departements,communes,cantons…), je ne pense pas que ce
soit bien de faire ca ?
Plus ca va, plus je me demande bien comment je vais résoudre ce problème
:S
Ma première solution n’est vraiment pas correcte?
Quelle autre approche je peux avoir ?
Dupliquer le champ lieu_type n’est pas optimal mais il n’y a pas non
plus de risque d’incohérence car le type de lieu correspondant a un
mandat ne changera jamais.
Merci
adrien
Je saurai y faire attention 
merci