Euh oui il y a une coquille dans mon message. Il fallait lire : "J'ai également un model Teams avec le code suivant :" au lieu de "J'ai également un model Matches avec le code suivant :"
Je vais creuser du côté des named_scope ça à l'air d'être ce dont j'ai besoin merci de vos réponses :-) Arnaud Icard Le 14 novembre 2009 08:35, Michel Belleville <[email protected]> a écrit : > Hmm, tes associations se trompent de sens. > > belongs_to se fait sur la table qui porte l'id d'une table étrangère, parce > que c'est cette table dont les éléments s'attache à ceux d'une autre > has_one ou has_many se fait sur une table qui est pointé par une clef > étrangère d'une autre table > > Exemple : > > En imaginant deux tables : > > table jappartiens : > id > je_possede_id > ... > > table je_possedes > id > ... > > Les modèles porteront les associations suivante : > > class Jappartien < AR::B > belongs_to :je_possede > ... > end > > class JePossede < AR::B > has_many :jappartiens > ... > end > > Donc soit tu as mal placé tes clefs étrangères, soit tu te trompe sur le > rôle des associations, mais je pencherais plutôt pour la première hypothèse. > > En espérant que ça aide. > > Michel Belleville > > > 2009/11/14 Guillaume BELLEGUIC <[email protected]> > > >> Bonjour, >> >> Le code est pas super facile à lire, mais a mon avis regarde du côté des >> named_scope sur ton modèle Event. >> Après je comprend pas le modèle Matches avec has_many :matches. >> >> Le 13 nov. 2009 à 23:34, arnaud a écrit : >> >> > >> > Bonjour, >> > >> > Je débute dans rails et je trouve face à un dilemme. >> > >> > Je développe (enfin j'essaye) une application qui gère des stats >> > d'évènements sportifs (foot, rugby, basket, choisissez...) >> > J'ai une table 'matches' avec les champs suivants : >> > t.date :date >> > t.integer :home_id # clé étrangère vers l'équipe qui reçoit >> > t.integer :away_id # clé étrangère vers l'équipe qui se >> > déplace >> > t.integer :home_score_halftime >> > t.integer :away_score_halftime >> > t.integer :home_score_final >> > t.integer :away_score_final >> > >> > J'ai également un model Matches avec le code suivant : >> > has_many :home_matches, :class_name => 'Event', :foreign_key => >> > 'home_id' >> > has_many :away_matches, :class_name => 'Event', :foreign_key => >> > 'away_id' >> > has_many :won_matches_at_home, :class_name => 'Event', >> :foreign_key >> > => 'home_id', >> > :conditions => 'home_score_final > >> away_score_final' >> > has_many :won_matches_away, :class_name => 'Event', :foreign_key >> => >> > 'away_id', >> > :conditions => 'home_score_final < >> away_score_final' >> > has_many :matches, :class_name => 'Event', :finder_sql => >> > 'SELECT DISTINCT * '+ >> > 'FROM teams t, events e '+ >> > 'WHERE (e.home_id=#{id} AND t.id=e.home_id) OR '+ >> > '(e.away_id=#{id} AND t.id=e.away_id) '+ >> > 'ORDER BY e.date DESC' >> > has_many :won_matches, :class_name => 'Event', :finder_sql => >> > 'SELECT DISTINCT * '+ >> > 'FROM teams t, events e '+ >> > 'WHERE (e.home_id=#{id} AND home_score_final > >> away_score_final AND >> > t.id=e.home_id) OR '+ >> > '(e.away_id=#{id} AND home_score_final < away_score_final >> AND >> > t.id=e.away_id) '+ >> > 'ORDER BY e.date DESC' >> > has_many :lost_matches, :class_name => 'Event', :finder_sql => >> > 'SELECT DISTINCT * '+ >> > 'FROM teams t, events e '+ >> > 'WHERE (e.home_id=#{id} AND home_score_final < >> away_score_final AND >> > t.id=e.home_id) OR '+ >> > '(e.away_id=#{id} AND home_score_final > away_score_final >> AND >> > t.id=e.away_id) '+ >> > 'ORDER BY e.date DESC' >> > has_many :draws, :class_name => 'Event', :finder_sql => >> > 'SELECT DISTINCT * '+ >> > 'FROM teams t, events e '+ >> > 'WHERE (e.home_id=#{id} AND home_score_final = >> away_score_final AND >> > t.id=e.home_id) OR '+ >> > '(e.away_id=#{id} AND home_score_final = away_score_final >> AND >> > t.id=e.away_id) '+ >> > 'ORDER BY e.date DESC' >> > >> > >> > Je crois que cela fonctionne même s'il faut que je vérifie encore un >> > peu je crois. >> > >> > Le problème est que je n'aime pas ce code :-) >> > Je le trouve moche et trop répétitif. >> > >> > Est-ce que vous connaitriez une astuce ou un tour de passe-passe pour >> > que rendre tout ça plus élégant ? >> > >> > Merci de votre aide. >> > >> > arnaud >> > >> > > >> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ 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] -~----------~----~----~----~------~----~------~--~---
