2015-05-22 31 views
1

我想更改我的Spree 3.0.x商店的“产品”概览,以仅显示可提供一种或多种变体的产品。这将在正常范围之上(可用,以当前货币定价)。 它也会影响分类列表。是否有一个范围允许我仅显示带有库存变体的产品?

我不想影响搜索页面,但是:搜索时,应显示不可用的产品。

据我所知,没有这样的范围,既不在Spree:Product也不在Spree::Product scopes.rb

如果没有这样的范围,joinsincludes的适当链将写在Product上的范围是什么?

Spree::Product.joins(
    variants_including_master: :stock_items 
).group('spree_products.id').having("SUM(count_on_hand) > 0") 

这应该给你接近你在找什么:

回答

3

我可能会喜欢的东西开始。

+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

1

你可以使用这个扩展:

https://github.com/swrobel/spree_zero_stock_products/

默认情况下,它只是增加了一个范围Spree::Product不改变默认的搜索范围。您可以方便地使用提供的:on_hand范围。

+0

扩展给了我需要的信息。但是它本身已经过时(我使用Spree 3.0.x),而且这两者都可以重新实现,但并不完全是我所需要的。我从中取得了一些代码并实施了自己。 – berkes

+1

@berkes您能分享您的实施吗? – Catalin

相关问题