2012-04-26 5 views
11

두 모델 : Course 및 ScheduledCourse가 있다고 가정 해 봅니다.레일스 3. 관련 모델별로 정렬

코스 모델에는 이름 속성이 있습니다.

코스 has_many : 계획 과정 scheduled_courses : belongs_to 물론

courses 
id | name 
1 | biology 
2 | history 
3 | chemistry 
4 | literature 

scheduled_courses 
id | course_id 
1 | 2 
2 | 4 
3 | 1 
4 | 2 

내가 액티브 쿼리 순으로 예약 된 과정을 정렬 할 수 있습니까? 문제가 해결되지 않으면

+2

다음을 시도해보십시오. http://stackoverflow.com/questions/1530131/rails-order-using-a-has-many-belongs-to-relationship – luacassus

+0

시도한 것을 게시해야합니다. – EricM

답변

18

보십시오 ...

ScheduledCourse.joins(:course).order('course.name') 

, 당신은 당신의 조건을 조인하기 전에과 같이, .all를 호출 할 필요가 있습니다

ScheduledCourse.all.joins(:course).order('course.name') 

처럼 luacassusthis answer can help 말했다 ; 그 대답의 문법은 pre-Arel (ActiveRecord 3)이라고 생각하지만 일을 끝내게됩니다. 희망이 도움이됩니다!

는 편집 :

@FellowStranger에서 언급 한 바와 같이

, 올바른 구문은 현재 테이블 이름은 복수에 있어야한다는

ScheduledCourse.joins(:course).order('courses.name') 
11
ScheduledCourse.joins(:course).order('courses.name asc') 

참고가 될 것으로 보인다. 이 코드는 테스트되었습니다.

+1

이 답변 더 정확한지, 받아 들인 답이나 벤 크리거 (Ben Kreeger)가 준 편집에 대한 대답으로 선택되어야합니다. – RickyD