move_to_last_child_of
Better nested setにはmove_to_child_ofというメソッドがあります。
これはどこかの子供にぶらさげてくれるわけなんですけど、
すでにぶら下がっている子供を押し退けて、先頭に収まってしまいます。
18を1の子供に移動しようとして、
./script/runner 'p Section.find(18).move_to_child_of(Section.find(1))'
を実行すると、以下のように先頭に入ってしまいます。
それでは都合が悪いので、move_to_last_child_ofを作りました。
def move_to_last_child_of(node) if node.children_count>0 self.move_to_right_of(node.children.last) else self.move_to_child_of(node) end end
これでsectionを移動すると以下のようになります。
./script/runner 'p Section.find(18).move_to_last_child_of(Section.find(1))'