From 1374ab51138a00024b0fe148394dbe4ea7f91578 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Fri, 17 Jul 2026 22:12:02 +0200 Subject: Fix the cleanup cascade for a real node destroy related_assets rows outlived their pages; head and draft carried a dependent destroy that double-destroyed rows has_many :pages already owns. Autosave keeps its own -- autosave pages carry no node_id, so pages does not reach them. --- app/models/node.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'app/models/node.rb') diff --git a/app/models/node.rb b/app/models/node.rb index 6ce6591..dc69508 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -4,9 +4,12 @@ class Node < ApplicationRecord # Associations has_many :pages, -> { order("revision ASC") }, :dependent => :destroy - belongs_to :head, :class_name => "Page", :foreign_key => :head_id, :dependent => :destroy, optional: true - belongs_to :draft, :class_name => "Page", :foreign_key => :draft_id, :dependent => :destroy, optional: true + belongs_to :head, :class_name => "Page", :foreign_key => :head_id, optional: true + belongs_to :draft, :class_name => "Page", :foreign_key => :draft_id, optional: true + # Autosave pages carry no node_id, so has_many :pages does not cover + # them -- this dependent: :destroy is their only cleanup on node destroy. belongs_to :autosave, :class_name => "Page", :foreign_key => :autosave_id, :dependent => :destroy, optional: true + has_many :permissions, :dependent => :destroy has_many :events, :dependent => :destroy belongs_to :lock_owner, :class_name => "User", :foreign_key => :locking_user_id, optional: true -- cgit v1.3