祖先 - 显示树中至少有一个类别有产品的类别

祖先 - 显示树中至少有一个类别有产品的类别

问题描述:

我使用祖先和全球化宝石作为我的类别,任何类别都可以有与之相关的产品。祖先 - 显示树中至少有一个类别有产品的类别

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

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

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 %> 
+0

个人推荐;你会更好地使用'acts_as_tree' –

我终于找到了一个方法,如何从另一端做到这一点。在我看来,迭代根类别之前,我呈现整个类别树,我验证树中至少有一个类别包含产品,然后呈现类别,否则不是。

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