By default, when you destroy a parent node all of the children nodes
are destroyed as well.
Is there a way I can modify this so that when you destroy a parent
node all the children nodes are simply “moved up” within the tree?
Thanks!
By default, when you destroy a parent node all of the children nodes
are destroyed as well.
Is there a way I can modify this so that when you destroy a parent
node all the children nodes are simply “moved up” within the tree?
Thanks!
come to think of it, I should probably just create my own function
called destroy_and_move_up or something =P
put it in the before_destroy callback of the model
put it in the before_destroy callback of the model
I tried using the before_destroy for a similar purpose - I wanted to
stop deletion if the node has children. But I ran into trouble, the
children were destroyed anyway. From what I have read elsewhere in
this group, I believe the before_destroy is only called after
dependent_destroy is actioned. That may be what is happening here.
Seems to me to write a seperate method may be the way to go.
Tonypm
I tried that already.
def before_destroy
self.children.each {|child|
child.parent_id = nil
child.save
}
end
(Yeah, I know, it doesn’t “move them up”, it just sets them to new
root nodes)
However, rails won’t let me do that. It says I can’t modify a frozen
hash. I’m not sure what that means, but I assume it means I can’t
modify things that are about to be destroyed.
On Nov 15, 1:35 pm, Thorsten M. [email protected]
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs