0

我有一个非常复杂的查询,导致记录集有很多记录。现在在 Ruby on Rails 中,我想以这样一种方式进行排序,即孩子归于父母之下。

喜欢record_set.sort_by_relation

它是同一张表的父子关系。孩子通过 parent_id 与父母相关联。

示例:具有以下结果的记录集:

  • 主标1
  • 分投标 21
  • 主标2
  • 分投标 1
  • 分投标 22
  • 分投标 2

期望的结果是:

  • 主标1
  • 分投标 1
  • 分投标 2

  • 主标2

  • 分投标 21
  • 分投标 22
4

1 回答 1

0

您可以使用像Awesome Nested Set这样的 gem来实现这种嵌套。

如果您不想使用 gem,您可以考虑首先让您的父母使用类似的东西where('parent_id IS NULL'),然后让每个父母使用where('parent_id = ?', object.id).

Awesome Nested Set 非常整洁。您将能够执行以下操作:

<ul>
  <%- record_set.roots.each do |record| %>
    <%= render :partial => 'record', :locals => {:record => record} %>
  <%- end %>
</ul>

_record.html.erb

<li>
  <%= record.name %>
  <%- unless record.children.empty? %>
    <ul>
      <%- record.children.each do |child|
        <%= render :partial => 'record', :locals => {:record => child} %>
      <%- end %>
    </ul>
  <%- end %>
</li>

我希望这有帮助 :)

于 2013-04-09T15:00:36.380 回答