2012-07-28 1 views
1

2012 년 가을 분기 사용자 클래스 목록을 출력하기 위해 노력하고 있습니다. 여기에는 사용자, 숙소 및 코스의 3 가지 모델이 있습니다. 나는 짓을했는지 다른 작업을 바탕으로, 내 모델 협회가 자리에있는 꽤 확신하지만, 관심있는 사람들을 위해 :RoR : 객체 배열의 모든 관련 객체 찾기

  • 사용자 has_many : 사용자 belongs_to 분기
  • 분기를 통해 코스 : 분기 및 has_many 분기 및 HABTM 숙소

을 통해 (해당 join 테이블을 통해)와 HABTM 과정

  • 코스 has_many 사용자 나 특정 분기 과정을 수집하는 단일 쿼리를 구현하고자하는 같은

    current_user.quarters.where(:term => "Fall 2012").courses.each do |c| 
         puts c.title 
        end 
    

    하지만이 오류 이해 "정의되지 않은 메서드 '과정'"결과,하지만 난 여전히 위의 코드 등의 개체의 배열의 액세스 연관된 모든 객체처럼 대신에 포함 된 실행하는 않는 것 루프는 내가 필요한 것을 수행합니다 :

    current_user.quarters.where(:term => "Fall 2012").courses.each do |q| 
         q.courses.each do |c| 
          puts c.title 
         end 
        end 
    

    고마워요! 어떤 아이디어가 감사합니다 :)이 같이

  • +0

    일을 해야하는 이유는 사용할 수 없습니다'Courses.where (: 분기 => my_quarter : 사용자 => CURRENT_USER) .each' –

    답변

    3

    :

    current_user.courses.where("quarters.term" => 'Fall 2012') 
    

    이 :)

    +0

    영웅적인 응답 시간과 내가 찾고있는 대답. 이런 종류의 일에 대해 더 자세히 알기 위해 어딘가에 있습니까? – mattwd7

    +0

    http://guides.rubyonrails.org/active_record_querying.html은 특히 조인에 대해 이야기하는 좋은 시작입니다. has_many : through를 선언 할 때 레일스는 원하는 것을 얻기 위해 조인을한다는 것을 이해해야합니다. 따라서 명시 적 조인을하는 것처럼 조건을 적용 할 수 있습니다. –

    +0

    또한 귀하의 필요에 맞는 대답을 승인하는 것을 고려하십시오 :) –