diff options
-rw-r--r-- | acf2/model/init.lua | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua index f2f79df..8f6d133 100644 --- a/acf2/model/init.lua +++ b/acf2/model/init.lua @@ -180,8 +180,15 @@ function M.Reference:deleted(context, addr) raise(context.path, 'Refers to '..addr) end - assert(policy == 'set-null') - node.save(context.parent, M.path.name(context.path)) + local parent = context.parent + local path = context.path + + if policy == 'cascade' then + path = node.path(parent) + parent = node.parent(parent) + else assert(policy == 'set-null') end + + node.save(parent, M.path.name(path)) end end |