我想更改我的Spree 3.0.x商店的“产品”概览,以仅显示可提供一种或多种变体的产品。这将在正常范围之上(可用,以当前货币定价)。 它也会影响分类列表。是否有一个范围允许我仅显示带有库存变体的产品?
我不想影响搜索页面,但是:搜索时,应显示不可用的产品。
据我所知,没有这样的范围,既不在Spree:Product
也不在Spree::Product scopes.rb
。
如果没有这样的范围,joins
和includes
的适当链将写在Product
上的范围是什么?
Spree::Product.joins(
variants_including_master: :stock_items
).group('spree_products.id').having("SUM(count_on_hand) > 0")
这应该给你接近你在找什么:
这是一个开始。但是它没有考虑到可追溯的项目或者将'track_inventory'设置为false或者是'backorderable'的变体。我想出的查询是'joins(:stock_items).where(“count_on_hand>?或#{Spree :: Variant.table_name} .track_inventory =?OR backorderable =?”,0,false,true).distinct' – berkes