From 36358293ce0cf440d57da3dfe00ca9d7dd530436 Mon Sep 17 00:00:00 2001 From: rhymes Date: Tue, 25 Aug 2020 20:20:47 +0200 Subject: [PATCH] [deploy] Add foreign keys to models related to Organization (#9933) * Add foreign keys to models related to Organization * Fix specs * Use on_delete: :cascade for listings -> organizations FK --- ...foreign_keys_to_models_related_to_organizations.rb | 11 +++++++++++ db/schema.rb | 9 ++++++++- spec/liquid_tags/link_tag_spec.rb | 2 +- spec/liquid_tags/listing_tag_spec.rb | 2 +- spec/policies/organization_policy_spec.rb | 4 ++-- spec/requests/articles/articles_update_spec.rb | 2 +- 6 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 db/migrate/20200822092853_add_missing_foreign_keys_to_models_related_to_organizations.rb diff --git a/db/migrate/20200822092853_add_missing_foreign_keys_to_models_related_to_organizations.rb b/db/migrate/20200822092853_add_missing_foreign_keys_to_models_related_to_organizations.rb new file mode 100644 index 000000000..8128837c6 --- /dev/null +++ b/db/migrate/20200822092853_add_missing_foreign_keys_to_models_related_to_organizations.rb @@ -0,0 +1,11 @@ +class AddMissingForeignKeysToModelsRelatedToOrganizations < ActiveRecord::Migration[6.0] + def change + add_foreign_key :articles, :organizations, on_delete: :nullify, validate: false + add_foreign_key :collections, :organizations, on_delete: :nullify, validate: false + add_foreign_key :credits, :organizations, on_delete: :restrict, validate: false + add_foreign_key :display_ads, :organizations, on_delete: :cascade, validate: false + add_foreign_key :classified_listings, :organizations, on_delete: :cascade, validate: false + add_foreign_key :notifications, :organizations, on_delete: :cascade, validate: false + add_foreign_key :organization_memberships, :organizations, on_delete: :cascade, validate: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 3ed3df879..3794d4d80 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2020_08_21_035520) do +ActiveRecord::Schema.define(version: 2020_08_22_092853) do # These are extensions that must be enabled in order to support this database enable_extension "citext" @@ -1355,6 +1355,7 @@ ActiveRecord::Schema.define(version: 2020_08_21_035520) do add_foreign_key "ahoy_messages", "users", on_delete: :cascade add_foreign_key "ahoy_visits", "users", on_delete: :cascade add_foreign_key "api_secrets", "users", on_delete: :cascade + add_foreign_key "articles", "organizations", on_delete: :nullify add_foreign_key "audit_logs", "users" add_foreign_key "badge_achievements", "badges" add_foreign_key "badge_achievements", "users" @@ -1363,9 +1364,13 @@ ActiveRecord::Schema.define(version: 2020_08_21_035520) do add_foreign_key "classified_listing_endorsements", "classified_listings" add_foreign_key "classified_listing_endorsements", "users" add_foreign_key "classified_listings", "classified_listing_categories" + add_foreign_key "classified_listings", "organizations", on_delete: :cascade add_foreign_key "classified_listings", "users", on_delete: :cascade + add_foreign_key "collections", "organizations", on_delete: :nullify + add_foreign_key "credits", "organizations", on_delete: :restrict add_foreign_key "display_ad_events", "display_ads", on_delete: :cascade add_foreign_key "display_ad_events", "users", on_delete: :cascade + add_foreign_key "display_ads", "organizations", on_delete: :cascade add_foreign_key "email_authorizations", "users", on_delete: :cascade add_foreign_key "html_variant_successes", "articles", on_delete: :nullify add_foreign_key "html_variant_successes", "html_variants", on_delete: :cascade @@ -1375,10 +1380,12 @@ ActiveRecord::Schema.define(version: 2020_08_21_035520) do add_foreign_key "messages", "chat_channels" add_foreign_key "messages", "users" add_foreign_key "notification_subscriptions", "users", on_delete: :cascade + add_foreign_key "notifications", "organizations", on_delete: :cascade add_foreign_key "oauth_access_grants", "oauth_applications", column: "application_id" add_foreign_key "oauth_access_grants", "users", column: "resource_owner_id" add_foreign_key "oauth_access_tokens", "oauth_applications", column: "application_id" add_foreign_key "oauth_access_tokens", "users", column: "resource_owner_id" + add_foreign_key "organization_memberships", "organizations", on_delete: :cascade add_foreign_key "page_views", "articles", on_delete: :cascade add_foreign_key "podcast_episodes", "podcasts", on_delete: :cascade add_foreign_key "podcasts", "users", column: "creator_id" diff --git a/spec/liquid_tags/link_tag_spec.rb b/spec/liquid_tags/link_tag_spec.rb index c8f183954..a18aa7ade 100644 --- a/spec/liquid_tags/link_tag_spec.rb +++ b/spec/liquid_tags/link_tag_spec.rb @@ -5,7 +5,7 @@ RSpec.describe LinkTag, type: :liquid_tag do let(:article) do create(:article, user_id: user.id, title: "test this please", tags: "html, rss, css") end - let(:org) { build_stubbed(:organization) } + let(:org) { create(:organization) } let(:org_user) do user = create(:user) build_stubbed(:organization_membership, user: user, organization: org) diff --git a/spec/liquid_tags/listing_tag_spec.rb b/spec/liquid_tags/listing_tag_spec.rb index 9fa6482b4..00d32c0ed 100644 --- a/spec/liquid_tags/listing_tag_spec.rb +++ b/spec/liquid_tags/listing_tag_spec.rb @@ -28,7 +28,7 @@ RSpec.describe ListingTag, type: :liquid_tag do updated_at: datetime, ) end - let(:org) { build_stubbed(:organization) } + let(:org) { create(:organization) } let(:org_user) do user = create(:user) create(:organization_membership, user: user, organization: org) diff --git a/spec/policies/organization_policy_spec.rb b/spec/policies/organization_policy_spec.rb index 07fea4b80..1dfbeb165 100644 --- a/spec/policies/organization_policy_spec.rb +++ b/spec/policies/organization_policy_spec.rb @@ -28,7 +28,7 @@ RSpec.describe OrganizationPolicy, type: :policy do subject(:organization_policy) { described_class.new(user, org) } let(:user) { build_stubbed(:user) } - let(:org) { build_stubbed(:organization) } + let(:org) { create(:organization) } before do create(:organization_membership, user: user, organization: org, type_of_user: "admin") @@ -43,7 +43,7 @@ RSpec.describe OrganizationPolicy, type: :policy do subject(:organization_policy) { described_class.new(user, new_org) } let(:user) { build_stubbed(:user) } - let(:org) { build_stubbed(:organization) } + let(:org) { create(:organization) } let(:new_org) { build_stubbed(:organization) } before { create(:organization_membership, user: user, organization: org, type_of_user: "admin") } diff --git a/spec/requests/articles/articles_update_spec.rb b/spec/requests/articles/articles_update_spec.rb index 6a2e73aee..534196b02 100644 --- a/spec/requests/articles/articles_update_spec.rb +++ b/spec/requests/articles/articles_update_spec.rb @@ -1,7 +1,7 @@ require "rails_helper" RSpec.describe "ArticlesUpdate", type: :request do - let(:organization) { build_stubbed(:organization) } + let(:organization) { create(:organization) } let(:organization2) { create(:organization) } let(:user) { create(:user, :org_admin) } let(:user2) do