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

Répondre à