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]
-~----------~----~----~----~------~----~------~--~---

Répondre à