Сортировка Ruby по логическому и числовому

Я использую Ruby 1.8.7. У меня есть следующий массив хешей. Сначала мне нужно отсортировать по логическому значению, но эти результаты также должны быть упорядочены в исходном порядке. В основном мне нужно переместить все истинные хэши в верхнюю часть массива, но сохранить исходный порядок.

Любая помощь будет принята с благодарностью!

array = [{:id => 1, :accepts => false}, 
         {:id => 2, :accepts => false}, 
         {:id => 3, :accepts => true}, 
         {:id => 4, :accepts => false}, 
         {:id => 5, :accepts => true}]

sorted = array.sort do |x, y|
  if x[:accepts] == y[:accepts]
    0
  elsif x[:accepts] == true
    -1
  elsif x[:accepts] == false
    1
  end
end

Этот вид, который у меня есть, дает:

5 - true
3 - верно
2 - ложь
4 - ложь
1 - ложь

Мне нужно, чтобы оно выдало:

3 - истина
5 - верно
1 - ложь
2 - ложь
4 - false

6
задан Nick 3 November 2010 в 20:08
поделиться