如何对祖先的孩子进行排序

时间:2014-01-25 23:57:26

标签: ruby-on-rails ruby-on-rails-3.2 ancestry

我正在使用一个名为MenuHeader

的模型的祖先宝石
class MenuHeader < ActiveRecord::Base
    has_ancestry

例如这个数据模型

id name          ancestry position
1  MenuHeader#1  NULL     1 
2  MenuHeader#2  1        1 
3  MenuHeader#3  1/2      2 
4  MenuHeader#4  1/2      1 

使用此表示法:

1. MenuHeader#1
  2. MenuHeader#2   
      4. MenuHeader#4 position 1
      3. MenuHeader#3 poition 2

查看https://github.com/stefankroes/ancestry处的自述文件;目前尚不清楚我将如何实现这一目标,或者这是否可行?我尝试在其上放置一个范围,但这似乎不起作用。好像好像是

<% menu_header.children.is_not_deleted.each do |menu_header|  %>
  <%= render 'menus/ancestry/menu_header_form', menu_header: menu_header %>
<% end %>

希望:

<% menu_header.sorted_children.is_not_deleted.each do |menu_header|  %>
  <%= render 'menus/ancestry/menu_header_form', menu_header: menu_header %>
<% end %>

但不知道该怎么做。关于如何实现这一点的任何想法?

编辑#1 我见过这个:

Note that since materialised path trees don’t support ordering within a rank, the order of siblings depends on their order in the original array.

在排序的讨论中,但似乎我应该能够将lambda传递给它应该如何排序。

1 个答案:

答案 0 :(得分:1)

我使用acts_as_list与祖先相结合来对节点进行排序

https://github.com/swanandp/acts_as_list