在 Rails 中对具有多个字段的数组进行排序

Ala*_*lan 1 ruby-on-rails

考虑下面的哈希

[
{:rank => 3, :time => "3.00 AM" , :name => "JJJ"},
{:rank => 1, :time => "3.05 AM" , :name => "AAA"},
{:rank => 5, :time => "2.55 AM" , :name => "XXX"},
{:rank => 2, :time => "3.10 AM" , :name => "BBB"}
]
Run Code Online (Sandbox Code Playgroud)

我如何按顺序对字段进行排序,以便获得像查询一样的结果
(考虑我们是否从表中获取值)

select * from my_table order by rank, time, name 
Run Code Online (Sandbox Code Playgroud)

如果我不清楚,请发表评论。

谢谢

izo*_*ica 5

a = [
{:rank => 3, :time => "3.00 AM" , :name => "JJJ"},
{:rank => 1, :time => "3.05 AM" , :name => "AAA"},
{:rank => 5, :time => "2.55 AM" , :name => "XXX"},
{:rank => 2, :time => "3.10 AM" , :name => "BBB"}
]
res = a.sort_by{|t| [t[:rank], t[:time], t[:name]]}
Run Code Online (Sandbox Code Playgroud)