rails记录集上的父子过滤

时间:2013-04-09 12:44:57

标签: ruby-on-rails tree parent-child

我有一个非常复杂的查询,导致记录集包含大量记录。现在在Ruby on Rails中,我想以这样一种方式对孩子进行排序。

record_set.sort_by_relation

是同一个表父母子关系。 Child通过parent_id与父级关联。

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

  • 主要招标1
  • sub tender 21
  • 主要招标2
  • sub tender 1
  • sub tender 22
  • sub tender 2

期望的结果是:

  • 主要招标1
  • sub tender 1
  • sub tender 2

  • 主要招标2

  • sub tender 21
  • sub tender 22

1 个答案:

答案 0 :(得分:0)

你可以使用像Awesome Nested Set之类的宝石到达那里,你可以使用它来实现这种嵌套。

如果您不想使用某个宝石,您可以考虑首先让您的父母使用where('parent_id IS NULL')之类的东西然后让每个父母使用{{1}获取其子女(以及其子女等) }。

令人敬畏的嵌套套装非常整洁。你将能够做到这样的事情:

where('parent_id = ?', object.id)

_record.html.erb

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

我希望这会有所帮助:)