1

我有 2 个模型:帖子和类别

类别 has_many Posts,

帖子属于_to类别,

类别模型使用祖先宝石

目标是获取属于给定类别及其所有祖先的所有帖子。我应该为此简单地使用一个循环还是有一些更聪明的方法来做到这一点?

4

2 回答 2

1

您可以使用它来获取属于给定category或其祖先之一的帖子:

Post.where(:category_id => category.path_ids)
于 2014-04-28T08:07:24.540 回答
1

使用ancestry gem时传递嵌套的散列对象,因此您可以选择一个主node对象,然后使用散列对象作为迭代并获取其所有祖先的一种方式:

#controller
@category = Category.find params[:id]

#view
render partial: "category", locals: { category: @category }

#partial
<ol class="categories">
    <% category.each do |category, sub_item| %>
        <li>
            <%= category.name %>
            <% if category.has_children? %>
            <%= render partial: "category", locals: { category: category.children } %>
            <% end %>
        </li>
    <% end %>
</ol>
于 2014-04-28T08:26:12.727 回答