0

次のような文字列値を含む:labelフィールドを持つ評価基準のモデルがあります

//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.

どうすればそれを達成できますか?

4

1 に答える 1

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
于 2012-06-26T01:15:57.133 に答える