2010-12-14 62 views
0

J'ai construit une application Ruby on Rails qui permet aux utilisateurs de suivre leurs entraînements.Comment filtrer dans une colonne de ressources associée à l'aide d'un named_scope?

User has_many :workouts

Workout belongs_to :user

Je tente d'appeler seulement des séances d'entraînement des utilisateurs de sexe masculin. Comment puis-je écrire une étendue nommée pour Workout.rb pour appeler uniquement des entraînements d'utilisateurs masculins? Dans mon cas, la colonne user.sex est une chaîne qui recueille soit Male soit Female. J'utilise les rails 2.3.8 pour cette application particulière.

Répondre

2

Essayez ceci:

class Workout 

    belongs_to :user 
    named_scope :all_male, :joins => :user, 
          :conditions => ["users.sex = ?", "Male"] 

    named_scope :all_female, :joins => :user, 
          :conditions => ["users.sex = ?", "Female"] 

end 

Maintenant, vous pouvez utiliser le champ comme:

Workout.all_male  
Workout.all_female 
+0

belle, je vous remercie. Bon de vous rencontrer à nouveau KandadaBoggu. Vous m'avez beaucoup aidé dans le passé. – bgadoci