From 5fff9adf4dedb63727d7a7b8caf31d2e56a6fa1d Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Thu, 16 Jan 2025 20:46:22 +0100 Subject: [PATCH] Delete Units respecting foreign key constraint --- db/seeds.rb | 2 -- db/seeds/templates/units.erb | 2 +- db/seeds/units.rb | 3 ++- test/system/units_test.rb | 2 +- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/db/seeds.rb b/db/seeds.rb index 3143d07..0085c3d 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -20,6 +20,4 @@ end # Formulas will be deleted as dependent on Quantities #[Source, Quantity, Unit].each { |model| model.defaults.delete_all } -# To clear contents of the table, use #truncate instead of #delete_all. This -# avoids foreign_key constraints errors. require_relative 'seeds/units.rb' diff --git a/db/seeds/templates/units.erb b/db/seeds/templates/units.erb index f76e37a..8d4566f 100644 --- a/db/seeds/templates/units.erb +++ b/db/seeds/templates/units.erb @@ -1,5 +1,5 @@ Unit.transaction do - ActiveRecord::Base.connection.truncate(Unit.table_name) + Unit.defaults.order(Unit.arel_table[:base_id].eq(nil)).delete_all units = {} <% Unit.defaults.ordered.each do |unit| %> <%= "\n" if unit.base.nil? %> diff --git a/db/seeds/units.rb b/db/seeds/units.rb index 60cbc03..1542066 100644 --- a/db/seeds/units.rb +++ b/db/seeds/units.rb @@ -1,5 +1,6 @@ Unit.transaction do - ActiveRecord::Base.connection.truncate(Unit.table_name) + Unit.defaults.order(Unit.arel_table[:base_id].eq(nil)).delete_all + units = {} units['1'] = diff --git a/test/system/units_test.rb b/test/system/units_test.rb index a8863a9..0c939f2 100644 --- a/test/system/units_test.rb +++ b/test/system/units_test.rb @@ -26,7 +26,7 @@ class UnitsTest < ApplicationSystemTestCase end # Cannot #destroy_all due to {dependent: :restrict*} on Unit.subunits association - @user.units.delete_all + @user.units.order(Unit.arel_table[:base_id].eq(nil)).delete_all visit units_path within 'tbody' do assert_selector 'tr', count: 1