自定义按字段排序对象,包含字母和数字的字符串

时间:2012-06-25 22:39:42

标签: ruby-on-rails sorting activerecord

我有一个评估标准模型,它有一个:标签字段,包含像

这样的字符串值
//P1
//P2
//P3
//P4
//M1
//M2
//M3
//M4
//D1
//D2
//D3
//D4
//etc.

我想通过这个字段来查询我的查询,但首先查看数字,然后按照P,M,D的顺序查看每个数字,结果是:

//P1
//M1
//D1
//P2
//M2
//D2
//P3
//M3
//D3
//P4
//M4
//D4
//etc.

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

试试这个:

sort_order = "PMD"

%w(//P1 //P2 //P3 //P4 //M1 //M2 //M3 //M4 //D1 //D2 //D3 //D4 ).sort_by do  |str| 
  str.gsub(/^.{3}/, '') + sort_order.index(str[2]).to_s
end