删除父节点但不删除子节点。
子节点应全部移动到已删除父节点的级别。
如何使用awesome_nested_set插件处理此方案?
修改
在删除子项之前
Id,Title,lft,rgt,parent_id
1,root,7,12,nil
2,孩子,8,11,1
3,子孩,9,10,2
删除2条记录后
Id,Title,lft,rgt,parent_id
1,root,7,12,nil
3,子孩,9,10,1,
我想将子子移动到已删除对象的直接父级。这是一个正确的结果吗?或者lft和rgt应该在删除后更改?
答案 0 :(得分:1)
某种形式:
实施例
@node = Node.find(params[:id])
@children = @node.children
@parent = @node.parent
@children.each{ |child| child.move_to_child_of @parent }
答案 1 :(得分:1)
@node = Node.find(params[:id])
@node.delete_node_keep_sub_nodes
@node.reload
@node.destroy
def delete_node_keep_sub_nodes
if self.child?
self.move_children_to_immediate_parent
else
self.move_children_to_root
end
end
def move_children_to_immediate_parent
node_immediate_children = self.children
node_immediate_parent = self.parent
node_immediate_children.each do |child|
child.move_to_child_of(node_immediate_parent)
node_immediate_parent.reload
end
end
def move_children_to_root
node_immediate_children = self.children
node_immediate_children.each do |child|
child.move_to_root
child.reload
end
end