2016-01-29 63 views
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 %> 
+0

個人推薦;你會更好地使用'acts_as_tree' –

回答

0

我終於找到了一個方法,如何從另一端做到這一點。在我看來,迭代根類別之前,我呈現整個類別樹,我驗證樹中至少有一個類別包含產品,然後呈現類別,否則不是。

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