我正在寻找一种有效的方法来检索要与产品搜索结果一起显示的类别树。
一个产品可以有一个或多个类别(与叶类别的多对多关系)。这个想法是从找到的每个类别的唯一 id 重建祖先树。我目前正在使用ancestors
acts-as-nested-set gem 提供的帮助器,但是它的缺点是对每个类别进行点查询。理想情况下,它将在单个查询中检索给定类别集的所有祖先。有任何想法吗?
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