taxon = Spree::Taxon.find_by_permalink('categories/outlet')
on_sale_products = taxon.products.on_hand
discontinued_variant_products = load_products_with_discontinued_variants
@PageItemLimit = 4
if params[:page]
offset = (params[:page].to_i) * @PageItemLimit
else
offset = 0
end
products = discontinued_variant_products | on_sale_products
products = products[(offset) , @PageItemLimit]
def load_products_with_discontinued_variants
key = Spree::Product.discontinued_variants_cache_key
product_ids = Rails.cache.fetch key, expires_at: 1.day do
Spree::Product
.with_discontinued_variants
.select { |product| product.variants.any? { |v| v.on_sale? &&
v.in_stock? } }
.pluck(:id)
end
Spree::Product.with_discontinued_variants.where("id IN (?)", product_ids)
end
add_search_scope :with_discontinued_variants do
select(' distinct spree_products.*').includes(variants: { prices: {
sale_prices: :calculator }}).where(discontinued_variants: true)
end
Это моя текущая установка для нумерации страниц,
distinued_variant_products имеет тип объекта отношения активной записи.on_sale_products имеет тип активных ассоциаций записей.
в настоящее время логика смещения, ограничения применяется к продуктам, которые являются массивом, содержащим результат объединения объектов активной записи (все данные).Я хочу использовать ключевое слово limit и offset для объекта активной записи для разбивки на страницы, но так как они являются двумя объектами, обработка limit-offset для обоих по отдельности дает неверные результаты, могут ли некоторые предоставить мне правильную логику для этого или если две активные записиобъекты могут быть объединены в новый объект Active record, к нему легко применить ограничение по смещению.