0

我为我的类别使用祖先和全球化宝石,任何类别都可以有与之相关的产品。

我想要做的是显示整个类别树(以特定语言,如果存在),该树中的至少一个类别包含产品(不仅仅是产品所在的类别)。

到目前为止,我有以下代码,它几乎可以满足我的需求,但它只是过滤产品所在的类别,但我需要获取整个树(从根到底部)。

Category.includes(:translations, category_maps: [:products]).where(category_translations: {:locale => I18n.locale.to_s} ).group("categories.id, category_maps.id, category_translations.id, products.id").having("count(products.id) > ?",0).arrange_serializable(:order => 'category_translations.name')

知道如何实现这一目标吗?谢谢你,米罗斯拉夫

解决方案

我终于找到了一种如何从另一边做到这一点的方法。在我看来,在哪里迭代根类别,在我渲染整个类别树之前,我验证树中的至少一个类别包含一个产品,然后渲染这些类别,否则不是。

<% if Category.find(root['id']).subtree.joins(:products).group("categories.id").having("count(products.id) > ?",0).length > 0 %> 
4

1 回答 1

0

我终于找到了一种如何从另一边做到这一点的方法。在我看来,在哪里迭代根类别,在我渲染整个类别树之前,我验证树中的至少一个类别包含一个产品,然后渲染这些类别,否则不是。

<% if Category.find(root['id']).subtree.joins(:products).group("categories.id").having("count(products.id) > ?",0).length > 0 %> 
于 2016-01-29T20:26:49.937 回答