Ruby では何でも並べ替えることができますが、並べ替えられた配列になってしまうことに注意してください。Ruby 1.9 以降、ハッシュには内部順序がありますが、Hash#sort メソッドは依然として配列を返します。
例えば:
hash = {
user1: { name: 'Baz', date: Time.current },
user2: { name: 'Bar', date: Time.current - 1.month },
user3: { name: 'Foo', date: Time.current - 2.months },
}
hash.sort { |x, y| x.last[:date] <=> y.last[:date] }
結果が得られます:
[
[:user3, {:name=>"Foo", :date=>Tue, 07 Aug 2012 20:32:23 CEST +02:00}],
[:user2, {:name=>"Bar", :date=>Fri, 07 Sep 2012 20:32:23 CEST +02:00}],
[:user1, {:name=>"Baz", :date=>Sun, 07 Oct 2012 20:32:23 CEST +02:00}]
]
ただし、それをハッシュにマップすることはそれほど難しくありません。