我有以下设置:
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中的“最佳实践”?
答案 0 :(得分: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