2013-10-03 25 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

相关问题