Rails祖先宝石+ has_many

时间:2014-04-28 07:29:07

标签: ruby-on-rails has-many ancestry

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

类别has_many帖子,

发布belongs_to类别,

类别模型使用ancestry gem

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

2 个答案:

答案 0 :(得分:1)

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

Post.where(:category_id => category.path_ids)

答案 1 :(得分: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>