如何使用named_scope过滤关联的资源列?

时间:2010-12-14 06:15:53

标签: ruby-on-rails ruby associations named-scope

我已经构建了一个Ruby on Rails应用程序,允许用户跟踪他们的锻炼。

User has_many :workouts

Workout belongs_to :user

我试图仅呼叫男性用户的锻炼。如何为Workout.rb编写命名范围,仅调用男性用户的锻炼?

就我而言,user.sex列是一个收集MaleFemale的字符串。

我在这个特定应用程序中使用rails 2.3.8。

1 个答案:

答案 0 :(得分:2)

试试这个:

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

现在您可以将范围用作:

Workout.all_male    
Workout.all_female