From cb0e7a5724834ff13f523b5cb47d984d5e5238f9 Mon Sep 17 00:00:00 2001 From: Robin Ward <robin.ward@gmail.com> Date: Fri, 28 Nov 2014 14:20:43 -0500 Subject: [PATCH] For performance reasons, use `delete_all` when removing a user's email logs --- app/models/user.rb | 2 +- spec/services/user_destroyer_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 56cad0d7052..8a846ee2d95 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -25,7 +25,7 @@ class User < ActiveRecord::Base has_many :post_actions, dependent: :destroy has_many :user_badges, -> {where('user_badges.badge_id IN (SELECT id FROM badges where enabled)')}, dependent: :destroy has_many :badges, through: :user_badges - has_many :email_logs, dependent: :destroy + has_many :email_logs, dependent: :delete_all has_many :post_timings has_many :topic_allowed_users, dependent: :destroy has_many :topics_allowed, through: :topic_allowed_users, source: :topic diff --git a/spec/services/user_destroyer_spec.rb b/spec/services/user_destroyer_spec.rb index efb50f0bd24..b7b685a558e 100644 --- a/spec/services/user_destroyer_spec.rb +++ b/spec/services/user_destroyer_spec.rb @@ -283,6 +283,17 @@ describe UserDestroyer do end end + context 'user got an email' do + let(:user) { Fabricate(:user) } + let!(:email_log) { Fabricate(:email_log, user: user) } + + it "deletes the email log" do + expect { + UserDestroyer.new(@admin).destroy(user, {delete_posts: true}) + }.to change { EmailLog.count }.by(-1) + end + end + context 'user liked things' do before do @topic = Fabricate(:topic, user: Fabricate(:user))