2017-09-26 69 views
0

我正在尋找一種有效的方式來檢索類別樹以顯示與產品搜索結果。渴望加載祖先樹多葉

產品可以有一個或多個類別(葉類別的多對多關係)。這個想法是根據找到的每個類別的唯一ID重建祖先樹。我目前使用由行爲作爲嵌套集gem提供的ancestors幫助程序,但是它具有爲每個類別進行點查詢的缺點。理想情況下,它將在單個查詢中檢索給定類別的所有祖先。有任何想法嗎?

def search 
    @search_result = @store.products.includes(:categories).where("title LIKE ? ", "%#{params[:query]}%") 

    # retrieving all leaf categories for the products above 
    unique_ids = @search_result.map { |p| p.categories.map { |c| c.id }}.flatten!.uniq! 
    @leaf_categories = Category.where(id: unique_ids).map { |c| c.ancestors } 
end 

回答

0

嘗試類別的急切裝載祖先爲好。

@search_result = @ store.products.includes(:類別=> [:祖先])。其中,( 「標題LIKE ?」, 「%#{PARAMS [:查詢]}%」 )