Ruby on rails 更改具有子节点的现有节点的父节点

Ruby on rails 更改具有子节点的现有节点的父节点,ruby-on-rails,ruby,ruby-on-rails-5,ancestry,Ruby On Rails,Ruby,Ruby On Rails 5,Ancestry,我使用的是带有祖先宝石的rails 5。我有一个组模型,它的记录已经排列在一棵树上。现在,我随机选取一个有子节点的组,并尝试更改其父节点id。该组对象已保存,但树结构未按预期更改,即仅移动一个节点,而不移动其子节点。这是我的密码: def change_hierarchy(parent) if valid_move?(parent) self.parent_id= self.read_attribute(:parent_id) + '/' + parent.read_at

我使用的是带有祖先宝石的rails 5。我有一个组模型,它的记录已经排列在一棵树上。现在,我随机选取一个有子节点的组,并尝试更改其父节点id。该组对象已保存,但树结构未按预期更改,即仅移动一个节点,而不移动其子节点。这是我的密码:

  def change_hierarchy(parent)
    if valid_move?(parent)
      self.parent_id= self.read_attribute(:parent_id) + '/' + parent.read_attribute(:parent_id)
      self.save
      true
    else
      false
    end
  end

self.parent\u id=self.read\u属性(:parent\u id)+'/'+parent.read\u属性(:parent\u id)必须做什么?这个方法真的改变了任何元素的位置吗<代码>祖先自动重建层次结构,该代码等于
self.parent\u id=self.read\u属性(:parent\u id)
,因为parent\u id为int,而
'id/some\u id/other\u id'。to\u i==id
。所以,这没什么作用。为什么不干脆
self.update(parent\u id:parent.parent\u id
)呢?另外,参数
parent
祖先的属性
parent
重叠。