Malheureusement ce n'est pas possible car rails ajoute d'office dans la requête
une condition sur l'identifiant. Dans mon cas, il rajoute : "events".team_id =
xxx
Je pourrais utiliser :foreign_key => "home_id" mais je veux sélectionner
également les matchs à l'extérieur (donc :foreign_key => "away_id". On ne peut
malheureusement pas spécifier 2 noms différents de foreign_key.
Je pense qu'il n'y pas de solution simple à ce problème... tant pis je vais
creuser un peu!
Merci quand même,
arnaud.
Le 15 nov. 2009 à 08:32, Guillaume BELLEGUIC a écrit :
> Bonjour,
>
> Il y a de forte chance que les named_scope ne fonctionne pas avec un
> finder_sql.
> essaie :
> has_many :matches, :class_name => 'Event, :conditions => ["tes conditions"]
>
> Le 14 nov. 2009 à 17:40, arnaud icard a écrit :
>
>> Bonjour,
>>
>> suite à mon précédent message, on m'a conseillé d'utiliser la fonctionnalité
>> named_scope.
>> Excellente idée! (merci guillaume)
>>
>> Je développe actuellement une application pour la gestion de stats de
>> rencontres sportives. (je débute hein :) )
>>
>> J'ai une table events :
>> t.date :date
>> t.integer :home_id # clé étrangère de l'équipe qui reçoit
>> t.integer :away_id # clé étrangère de 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
>>
>> Voila ce qu'on peut trouver dans le modèle 'Team':
>> has_many :matches_at_home, :class_name => 'Event', :foreign_key =>
>> 'home_id'
>> has_many :matches_away, :class_name => 'Event', :foreign_key =>
>> 'away_id'
>> has_many :matches, :class_name => 'Event', :finder_sql =>
>> 'SELECT DISTINCT * '+
>> 'FROM teams , events '+
>> 'WHERE (events.home_id=#{id} AND teams.id=events.home_id) OR '+
>> '(events.away_id=#{id} AND teams.id=events.away_id)'
>>
>> Dans le modèle 'Events':
>> belongs_to :home, :class_name => "Team"
>> belongs_to :away, :class_name => "Team"
>>
>> named_scope :not_yet_played, :conditions => "date >
>> '#{Time.now.strftime("%Y-%m-%d")}'"
>> named_scope :finished, :conditions => "date <
>> '#{Time.now.strftime("%Y-%m-%d")}'"
>> named_scope :won, :conditions => "home_score_final > away_score_final"
>> named_scope :lost, :conditions => "home_score_final < away_score_final"
>>
>> named_scope :draw, :conditions => "home_score_final = away_score_final"
>> named_scope :not_won, :conditions => "home_score_final <=
>> away_score_final"
>>
>> Et là, magie de ruby!
>> Je peux utiliser le code suivant :
>> Team.first.matches_at_home.won
>> Team.first.matches_away.not_yet_played
>>
>> Ca commence à ressembler à du code qui me plait!
>>
>> Par contre ce qui me pousse à écrire c'est le fait que le code suivant me
>> renvoie une erreur : Team.first.matches.peu_importe_le_scope
>> ===> each delegated to proxy_found.each, but proxy_found is nil: nil
>>
>> Pourtant Team.first.matches me renvoie bien tous les matches de cette équipe
>> (joués et à venir)
>>
>> Je sèche un peu là (en même temps avec ce qu'il pleut... hum hum)
>>
>> Si quelqu'un peut m'aider à y voir plus clair dans ce brouillard... d'avance
>> merci!!
>>
>>
>> Arnaud Icard
>>
>>
>
>
> >
--~--~---------~--~----~------------~-------~--~----~
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]
-~----------~----~----~----~------~----~------~--~---