From 6afd7f0eae54c813c548bc7a136e3c1fe4d31e20 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Tue, 4 Jun 2019 10:01:20 +0100 Subject: [PATCH] FIX: Clean broken relations before adding javascript_caches foreign key --- .../20190513143015_add_theme_id_to_javascript_cache.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/db/migrate/20190513143015_add_theme_id_to_javascript_cache.rb b/db/migrate/20190513143015_add_theme_id_to_javascript_cache.rb index 1dc361153b9..16710de3ee8 100644 --- a/db/migrate/20190513143015_add_theme_id_to_javascript_cache.rb +++ b/db/migrate/20190513143015_add_theme_id_to_javascript_cache.rb @@ -2,6 +2,15 @@ class AddThemeIdToJavascriptCache < ActiveRecord::Migration[5.2] def up + # Delete any javascript caches with broken foreign keys + execute <<~SQL + DELETE FROM javascript_caches jc + WHERE NOT EXISTS ( + SELECT 1 + FROM theme_fields tf + WHERE tf.id = jc.theme_field_id + ); + SQL make_changes execute "ALTER TABLE javascript_caches ADD CONSTRAINT enforce_theme_or_theme_field CHECK ((theme_id IS NOT NULL AND theme_field_id IS NULL) OR (theme_id IS NULL AND theme_field_id IS NOT NULL))" end