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))