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