2012-04-26 262 views
11

假設我有兩種模型:Course和ScheduledCourse。Rails 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 

我怎樣才能讓一個ActiveRecord查詢計劃的課程按字母順序排序?

+2

試試這個:http://stackoverflow.com/questions/1530131/rails-order-using-a-has-many-belongs-to-relationship – luacassus 2012-04-26 15:04:38

+0

你應該發佈你已經嘗試過的... – EricM 2012-04-26 15:09:53

回答

18

嘗試...

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

如果這不起作用,你可能需要調用.all您的加入條件之前,像這樣:

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

luacassus說,this answer can help ;我認爲答案中的語法是Arel(ActiveRecord 3)之前的語法,但它會完成工作。希望有所幫助!

編輯:

正如@FellowStranger提到的,正確的語法時下似乎

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

注意,表名應該是複數。此代碼已經過測試。

+1

這個答案是更正確的,要麼選擇它作爲接受的答案,要麼本克里格給出的答案需要編輯。 – RickyD 2013-07-21 15:22:04