У меня есть массив [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-запрос?
Спасибо за помощь !!