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