我有一个非常复杂的查询,导致记录集有很多记录。现在在 Ruby on Rails 中,我想以这样一种方式进行排序,即孩子归于父母之下。
喜欢record_set.sort_by_relation
。
它是同一张表的父子关系。孩子通过 parent_id 与父母相关联。
示例:具有以下结果的记录集:
- 主标1
- 分投标 21
- 主标2
- 分投标 1
- 分投标 22
- 分投标 2
期望的结果是:
- 主标1
- 分投标 1
分投标 2
主标2
- 分投标 21
- 分投标 22
我有一个非常复杂的查询,导致记录集有很多记录。现在在 Ruby on Rails 中,我想以这样一种方式进行排序,即孩子归于父母之下。
喜欢record_set.sort_by_relation
。
它是同一张表的父子关系。孩子通过 parent_id 与父母相关联。
示例:具有以下结果的记录集:
期望的结果是:
分投标 2
主标2
您可以使用像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>
我希望这有帮助 :)