Erreur named_scode: "each delegated to proxy_found.each, but proxy_found is nil: nil"

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 :slight_smile: )

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

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 :

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 :