0

我有以下设置:

class Program
   has_many :participants
end

class Participant
   belongs_to :user
end

class User
   has_many :participants
end

我希望类方法或范围返回某个用户参与的所有程序。这是我到目前为止所拥有的:

def self.where_user_participates(user)
   Program.joins(:participants).where('participants.user_id' => user.id)
end

我相信这行得通,但我不喜欢它。我不想谈论'id',而是使用关联,但我无法让它发挥作用,例如:

def self.where_user_participates(user)
  Program.joins(:participants).where('participants.user' => user)
end

我该如何改进呢?在 Rails 3 中,不需要官方的“范围”并且类方法是“最佳实践”,这是真的吗?

4

1 回答 1

2
class Program
  has_many :participants
end

class Participant
  belongs_to :user
  belongs_to :program
end

class User
  has_many :participants
  has_many :programs, :through => :participants
end

然后获取程序调用:

user.programs
于 2013-01-07T17:05:51.337 回答