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

Répondre à