2013-10-03 26 views
0

正如標題所述,我想做一個sort_by,這樣我的課程模型可以按其「年」列排序,但在這樣一個我可以指定的順序。如何sort_by屬性對數組(數組指定「排序」)

可能是幾年:

Freshman 
Sophomore 
Junior 
Senior 

所以我想使那些到一個數組:

array_of_years = ["Freshman", "Sophomore", "Junior", "Senior"] 

以及他們的一年,我的課程排序在數組的順序。

例如(僞如下,我只是做了語法解釋一下我所要求的),通過訂購了所有課程

Course.all.sort_by{ |course| course.year, array_of_years } 

這將在array_of_years排列順序進行排序「大一」的「年」欄第一,「高級」欄最後一欄。

如果我想讓他們從高中到大學新生進行排序,然後我會做:

Course.all.sort_by{ |course| course.year, array_of_years.reverse } 

或者我可以簡單地重新排列array_of_years陣列我喜歡和使用的一個代碼塊。

有沒有辦法在Ruby/Rails中這樣排序?

回答

3
Course.all.sort_by { |course| array_of_years.index(course.year) } 

反向:

Course.all.sort_by { |course| -array_of_years.index(course.year) } 
+0

就嘗試過,但它並沒有命令他們 – trevorhinesley

+0

AHHHH,但這樣做指數(course.year)的作品!謝謝 – trevorhinesley

+0

@Robokid你是對的,我編輯了我的答案。 – akhanubis

相關問題