Разбивка на две активные записи объектов - PullRequest
0 голосов
/ 05 июня 2018
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, к нему легко применить ограничение по смещению.

...