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 à