From 9e4a2c906b9c74082b28386b262406ceef4635ef Mon Sep 17 00:00:00 2001 From: Martin Meyerhoff Date: Fri, 27 Oct 2023 10:50:10 +0200 Subject: [PATCH] Add foreign key constraint to Spree::OrderPromotions table This adds a foreign key constraint that makes sure at the database level that we don't have non-existent order IDs in the spree_orders_promotions table. --- .../20231027084517_add_order_promotions_foreign_key.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 core/db/migrate/20231027084517_add_order_promotions_foreign_key.rb diff --git a/core/db/migrate/20231027084517_add_order_promotions_foreign_key.rb b/core/db/migrate/20231027084517_add_order_promotions_foreign_key.rb new file mode 100644 index 00000000000..8660de79afc --- /dev/null +++ b/core/db/migrate/20231027084517_add_order_promotions_foreign_key.rb @@ -0,0 +1,10 @@ +class AddOrderPromotionsForeignKey < ActiveRecord::Migration[7.0] + def up + Spree::OrderPromotion.left_joins(:order).where(spree_orders: { id: nil }).delete_all + add_foreign_key :spree_orders_promotions, :spree_orders, column: :order_id, validate: false, on_delete: :cascade + end + + def down + remove_foreign_key :spree_orders_promotions, :spree_orders + end +end