У меня есть массив @products
. Каждый элемент массива является хешем, содержащим несколько полей (но не всех) из таблицы Product
и соответствующих значений.RoR: Как отсортировать массив с помощью областей
У меня есть область descend_by_popularity
в Product
, что позволяет сортировать товары на основе popularity
. Я хотел бы отсортировать массив @products
, используя эту область.
Что я пробовал:
@product_group = Array.new
@products.each do |product|
@product_group.push(Product.find(product['id']))
end
@product_group1 = @product_group.descend_by_popularity
Но это дает мне ошибку:
undefined method `descend_by_popularity' for #<Array:0xb2497200>
Я также хочу, чтобы изменить отсортированный список Product
обратно в формат @products
массива.
Благодаря
Я Извлечение '@' продуктов массив из 'solr'. Таким образом, его невозможно изменить. – nish
Затем вы должны либо использовать Solr для сортировки (быстрее или в любом случае), либо вручную сортировать. Как выглядит этот объем? Если это только одно или два поля, вы можете использовать сортировку Array # (в зависимости от того, насколько большой этот массив может получить это может или не может работать.) –
Невозможно добавить поле в solr.Сфера является 'лямбда { { : присоединяется =>: мастер, : заказ =><< SQL COALESCE (( ВЫБОР COUNT (line_items.id) ОТ line_items РЕГИСТРИРУЙТЕСЬ варианты, как popular_variants НА popular_variants.id = line_items.variant_id ГДЕ popular_variants.product_id = products.id ), 0) DESC SQL- } } ' – nish