Ouverture de session

Commentaires récents

Syndication
Flux XML

Gestion de clés étrangères dupliquées

Gestion de clés étrangères dupliquées
Posté par FEANOR le Dimanche, 17 Juin, 2007 - 4:15pm. Docs en Français

Bonjour à toute la communauté,

Je débute et balbutie sous ROR et cherche désespérément une solution au problème suivant :

je souhaiterai disposer d'une table de type résultats sportifs avec des relations du genre :
matches
joueur1_id
joueur2_id

et je me trouve confronté à une erreur du genre : "Une clé dupliquée rompt la contrainte unique "matches_pkey".

N'ayant pas saisi comment indiquer (dans le modèl ?, dans le controller ?) la gestion de "plusieurs" clés étrangères en même temps ...

D'avance merci pour votre aide ...



[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | sujet précédent | sujet suivant | envoyer par email ]

Options d'affichage des commentaires
Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder" pour activer vos changements.

Sujet: 
salute
Auteur: 
orfeu
Date: 
Dim, 17/06/2007 - 17:09

Je ne suis pas sur de bien comprendre ton probleme...

la gestion de clefs etrangeres dans rails est faite par le modele donc active record. Pour creer des relations entre les tables, il faut que tu mette dans ton modele match
has_many :joueurs
et la tu pourra appeler match.joueurs
En esperant que j'ai bien compris ce que tu voulais faire...


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Gestion de 2 clés étrangères
Auteur: 
FEANOR
Date: 
Dim, 17/06/2007 - 20:29

Merci de ta première réponse ...

Je vais tenter de préciser mon problème ... ce qui n'est pas évident compte tenu de mes connaissances en la matière.

En fait la table match est censée géré un résultat sportif avec le nom d'une premier joueur et d'un second joueur, "appelés" via leur "id" (d'où le joueur1_id et joueur2_id).

Au niveau de la vue "New", apparemment pas de souci : j'ai bien la possibilité d'appeler les @match.joueur.nom de chaque joueur ...
Le problème semble se situer au niveau de la "création" d'un nouveau résultat de match ... C'est à ce moment qu'apparaît le message d'erreur du type : "StatementInvalid ... la clé dupliquée ..."

Si je saisis un résultat "en dur" via les commandes postgresql par ex. j'ai la possibilité ensuite d'utiliser la "vue" sur le résultat et ainsi obtenir un nom de joueur différent correspondant à chaque "id" de joueur ... à condition toutefois d'avoir indiquer une foreign_key "spécifique" (joueurdomicile_id) pour le 1er joueur et une "standard" (joueur_id) pour le second ... dans le cas contraire, seul le "premier" joueur est identifié ...
D'après ce que j'en comprends ROR (ce qui n'est pas gagné !! :) ) est dans l'impossibilité d'identifier le bon "id", au moment de la création, pour le joueur "à domicile" et celui pour le joueur "visiteur" ...


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
active record
Auteur: 
orfeu
Date: 
Sam, 23/06/2007 - 22:23

En fait je crois que c'est un problème de structure...
Pour pouvoir bien utiliser un objet ruby, il faut utiliser active record pour créer tes tables, c'est plus simple et je ne sais faire que comme ca...
tu peux faire:


script/generate model match
script/generate model joueur

dans le dossier db/migrate/002_joueurs.rb tu ajoute
t.column :match_id, :string

pour mettre le tout dans ta base:


rake db:migrate

(si les tables ne sont pas encore crées)

en ajoutant apres le has_many et le belongs_to ca devrait marcher! ;)


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Gestion clé dupliquée
Auteur: 
FEANOR
Date: 
Dim, 24/06/2007 - 00:32

Bonsoir,

Merci encore de tes réponses.

En fait ... le problème venait de ma table matches ... y'avait un problème dans la sequence de la clé primaire ... du coup mes tentatives de création - mise à jour des matches butait sur un "id" redondant ...
après réinitialisation de la "sequence_id" ... tout fonctionnait correctement et je pouvais donc afficher dans la vue match le joueur1 face au joueur2 ...

Comme quoi quand on découvre et (postgre)sql, et ror et plus globalement le balbutiement dans la programmation ... on peut perdre des jours pour ... pas grand chose.


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
Héritage de Tables
Auteur: 
mizoutch
Date: 
Lun, 03/09/2007 - 20:46

Bonsoir,
Je viens de lire ce que vous avez rencontré comme problème, et il se trouve que je tombe sur un cas similaire où j'ai deux joueurs (clients dans mon cas) qui poitent vers un match ( une taches dans mon cas) à un détail prés que j'ai deux rôles à attribuer à mes clients ( un donneur et un receveur). Pour un match on s'en fou, ils ont juste besoin de marquer leur présence A contre B ou B contre A c'est kif-kif.
Au début j'ai pensé à utiliser l'héritage des tables dans le modèle, ainsi il y aura un attribut de plus qui détermine le profil du client (donneur ou receveur):

class Client < ActiveRecord::Base
end
class Donneur < Client
belongs_to: tache
end
class Receveur < Client
belongs_to: tache
end

Mais avant d'aller plus loin, je suis curieux de connaitre ce que vous appellez par "Sequence"
, Merci


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Sujet: 
STI
Auteur: 
jasperiel
Date: 
Mar, 04/09/2007 - 12:33

Oui, le STI est un truc sympa et fourni de base dans AR.

http://api.rubyonrails.org/classes/ActiveRecord/Base.html
(recherche: Single Table Inheritance)


[ Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | envoyer par email ]

Nouveaux liens

Sondage
Lorsque je développe avec Ruby on Rails c'est principalement sous:
Linux
38%
Mac OS X
29%
Windows
31%
(Free|Open|Net) BSD
1%
Autre...
1%
Nombre de votes: 345

Qui est en ligne
Il y a actuellement 1 utilisateur et 29 invités en ligne.

railsfrance.org - communauté francophone des utilisateurs de Ruby on Rails
[ Hébergement et ressources techniques gracieusement fournis par la SSLL Nuxos Group ]