From f2754e416e16c1b56810b835505346c295578c7a Mon Sep 17 00:00:00 2001 From: Jan Provaznik Date: Fri, 6 Sep 2019 11:54:58 +0200 Subject: Use delete_all for deleting events Because we don't have any destroy callbacks (or other logic triggered on event destroy), there is no reason for deleting events inefficiently one by one, instead we can use :delete_all. --- app/models/issue.rb | 2 +- app/models/merge_request.rb | 2 +- app/models/milestone.rb | 2 +- app/models/note.rb | 2 +- app/models/user.rb | 2 +- spec/models/user_spec.rb | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index 75d4fc8c1c5..7c5a139ab55 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -31,7 +31,7 @@ class Issue < ApplicationRecord has_internal_id :iid, scope: :project, init: ->(s) { s&.project&.issues&.maximum(:iid) } - has_many :events, as: :target, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent + has_many :events, as: :target, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent has_many :merge_requests_closing_issues, class_name: 'MergeRequestsClosingIssues', diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 95daa48d4bc..901ebcf249f 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -54,7 +54,7 @@ class MergeRequest < ApplicationRecord belongs_to :head_pipeline, foreign_key: "head_pipeline_id", class_name: "Ci::Pipeline" - has_many :events, as: :target, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent + has_many :events, as: :target, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent has_many :merge_requests_closing_issues, class_name: 'MergeRequestsClosingIssues', diff --git a/app/models/milestone.rb b/app/models/milestone.rb index 915978d37b8..7f46e5faf1a 100644 --- a/app/models/milestone.rb +++ b/app/models/milestone.rb @@ -37,7 +37,7 @@ class Milestone < ApplicationRecord has_many :issues has_many :labels, -> { distinct.reorder('labels.title') }, through: :issues has_many :merge_requests - has_many :events, as: :target, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent + has_many :events, as: :target, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent scope :of_projects, ->(ids) { where(project_id: ids) } scope :of_groups, ->(ids) { where(group_id: ids) } diff --git a/app/models/note.rb b/app/models/note.rb index 0d024b0a25c..5bd3a7f969a 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -78,7 +78,7 @@ class Note < ApplicationRecord # suggestions.delete_all calls has_many :suggestions, -> { order(:relative_order) }, inverse_of: :note, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent - has_many :events, as: :target, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent + has_many :events, as: :target, dependent: :delete_all # rubocop:disable Cop/ActiveRecordDependent has_one :system_note_metadata has_one :note_diff_file, inverse_of: :diff_note, foreign_key: :diff_note_id diff --git a/app/models/user.rb b/app/models/user.rb index 67d730e2fa3..5f109feb96a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -131,7 +131,7 @@ class User < ApplicationRecord has_many :notes, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent has_many :issues, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent has_many :merge_requests, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent - has_many :events, dependent: :destroy, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent + has_many :events, dependent: :delete_all, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent has_many :releases, dependent: :nullify, foreign_key: :author_id # rubocop:disable Cop/ActiveRecordDependent has_many :subscriptions, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent has_many :oauth_applications, class_name: 'Doorkeeper::Application', as: :owner, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index b8c323904b8..6722a3c627d 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -32,7 +32,7 @@ describe User do it { is_expected.to have_many(:groups) } it { is_expected.to have_many(:keys).dependent(:destroy) } it { is_expected.to have_many(:deploy_keys).dependent(:nullify) } - it { is_expected.to have_many(:events).dependent(:destroy) } + it { is_expected.to have_many(:events).dependent(:delete_all) } it { is_expected.to have_many(:issues).dependent(:destroy) } it { is_expected.to have_many(:notes).dependent(:destroy) } it { is_expected.to have_many(:merge_requests).dependent(:destroy) } -- cgit v1.2.1