У меня есть массив [5, 3, 1, 4]
который соответствует хэш-ключей производится следующим кодом:Сортировка многомерного массива на основе второго массива в Рубине
@ordered_hash = Review.group('aidmodel_id').average('score')
@ordered_hash = ActiveSupport::OrderedHash[@ordered_hash.sort_by {|key, value| value }]
@keys = @ordered_hash.keys
Используя ключи, полученные @keys = [5, 3, 1, 4]
Я хотел бы, чтобы вытащить некоторые записи из моя база данных использует:
@reviews = Review.where(:aidmodel_id=>@keys).uniq_by {|x| x.aidmodel_id}
Это хорошо работает. Однако возвращаемые модели находятся в том порядке, в котором они отображаются в базе данных, а не в порядке, указанном ключами. Это означает, что результат сортируется случайным образом, а не в порядке среднего балла.
Должен быть какой-то способ переупорядочить многомерный массив, возвращенный системой Review.where на основе массива @keys .. или каким-то образом вывести записи в правильном порядке .. возможно, используя цикл вокруг SQL запрос?
Спасибо за помощь!
«возвращенные модели находятся в том порядке, в котором они отображаются в базе данных», не совсем верно, в базе данных нет порядка, если вы явно не заказываете BY. –
К сожалению, я имею в виду порядок их идентификаторов – Abram