diff options
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/node.rb | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/app/models/node.rb b/app/models/node.rb index 82d9954..9cb4840 100644 --- a/app/models/node.rb +++ b/app/models/node.rb | |||
| @@ -227,6 +227,11 @@ class Node < ApplicationRecord | |||
| 227 | 227 | ||
| 228 | if staged_parent_id && (staged_parent_id != parent_id) | 228 | if staged_parent_id && (staged_parent_id != parent_id) |
| 229 | new_parent = Node.find(staged_parent_id) | 229 | new_parent = Node.find(staged_parent_id) |
| 230 | |||
| 231 | if new_parent == self || self.descendants.include?(new_parent) | ||
| 232 | raise ActiveRecord::RecordInvalid.new(self), "Cannot move a node under itself or one of its own descendants" | ||
| 233 | end | ||
| 234 | |||
| 230 | self.staged_parent_id = nil | 235 | self.staged_parent_id = nil |
| 231 | self.save! | 236 | self.save! |
| 232 | self.move_to_child_of(new_parent) | 237 | self.move_to_child_of(new_parent) |
