2010-03-19 7 views
0

I가 다음과 같은 모델을 선택레일 관계는

class User < ActiveRecord::Base 
    has_many :results, :dependent => :destroy 
    has_many :participants, :dependent => :destroy 
    has_many :courses, :through => :participants 
end 

class Course < ActiveRecord::Base 
    has_many :tests, :dependent => :destroy 
    has_many :participants, :dependent => :destroy 
    has_many :users, :through => :participants 
end 

class Result < ActiveRecord::Base 
    belongs_to :test 
    belongs_to :user 
    end 

class Test < ActiveRecord::Base 
    belongs_to :course 
    has_many :results, :dependent => :destroy 
end 

아이디어입니다 사용자 has_and_belongs_to_many 과정, 과정 has_many 테스트 및 모든 테스트 has_and_belongs_to_many 사용자 (결과). 그럼 코스 (테스트가 아님)의 모든 결과를 선택하는 가장 좋은 쿼리는 무엇이며, 단일 코스의 모든 결과를 하나의 사용자로부터 선택하는 쿼리도 무엇입니까?

감사합니다.

+0

어떻게 할까? –

+0

당신이 생각하는 답변에 투표를하는 것이 좋습니다. 녹색 체크 표시 (일명 '내 질문에 대답했습니다')를 선택하면 가장 좋은 것으로 판단되는 답변에 답이 표시되어 문제가 해결됩니다. –

답변

2

특정 코스의 결과를 얻으려면 - 두 모델 사이의 유일한 다리가 테스트 모델 인 경우 검색어에 테스트를 포함시켜야합니다. 두 번째 쿼리

Result.find(:all, :conditions => ["tests.course_id = ?",@course.id], :include => :test) 

:

Result.find(:all, :conditions => ["user_id = ? AND tests.course_id = ?",@user.id, @course.id], :include => :test) 
관련 문제