Знаю что это неправильные действия изначально, но все же, другого выхода в моем случае не вижу.
Есть товары - модель Items(таблица items).
Цена на них строится динамически - модель PriceItems (таблицы нет).
Нужно сделать сортировку товаров по цене, делаю
@products.map do |product|
price = @prices["#{product.make_name}-#{product.oem}"] #здесь получаю цену конкретного товара
if price.present?
[price.cost, product]
end
end
Получается такой массив:
[[6845, #<Product id: 1], [6345, #<Product id: 2], [4742, #<Product id: 3], [6045, #<Product id: 4]]
Дальше делаю
j = s.sort_by {|h| h[0]} # сортирую по цене
w = j.each {|el| el.delete_at(0)} # удаляю цену и получаю [[#<Product id: 3], [#<Product id: 4], [#<Product id: 2], [#<Product id: 1] ]
@sort_products = w.flatten #Получаю массив с объектами [#<Product id: 3, #<Product id: 4, #<Product id: 2, #<Product id: 1]
В общем получаю массив объектов, как его преобразовать в массив объектов
ActiveRecord::Relation
?
На самом деле я делаю
Items.where(id: @sort_products.map(&:id))
, но возвращает это AR:Relation отсортированный по id (т.е. вернулся к первоначальному состоянию)