From 3874d40910efb100fecdb975fe700b6e7b4f1ed6 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Wed, 18 Jul 2018 10:21:54 +0800 Subject: [PATCH] Prepare to drop `EmailLog#topic_id`. --- app/models/email_log.rb | 4 +++- lib/email/receiver.rb | 2 +- lib/email/sender.rb | 8 +++----- spec/components/email/sender_spec.rb | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/models/email_log.rb b/app/models/email_log.rb index ee57d0db19f..10240f8bc70 100644 --- a/app/models/email_log.rb +++ b/app/models/email_log.rb @@ -1,6 +1,8 @@ require_dependency 'distributed_mutex' class EmailLog < ActiveRecord::Base + self.ignored_columns = %w{topic_id} + CRITICAL_EMAIL_TYPES ||= Set.new %w{ account_created admin_login @@ -14,7 +16,7 @@ class EmailLog < ActiveRecord::Base belongs_to :user belongs_to :post - belongs_to :topic + has_one :topic, through: :post validates :email_type, :to_address, presence: true diff --git a/lib/email/receiver.rb b/lib/email/receiver.rb index 50735806d2d..ae8da1a36f6 100644 --- a/lib/email/receiver.rb +++ b/lib/email/receiver.rb @@ -634,7 +634,7 @@ module Email def forwarded_reply_key?(email_log, user) incoming_emails = IncomingEmail .joins(:post) - .where('posts.topic_id = ?', email_log.topic_id) + .where('posts.topic_id = ?', email_log.topic.id) .addressed_to(email_log.reply_key) .addressed_to_user(user) .pluck(:to_addresses, :cc_addresses) diff --git a/lib/email/sender.rb b/lib/email/sender.rb index f36b9496924..7dca1fa8550 100644 --- a/lib/email/sender.rb +++ b/lib/email/sender.rb @@ -77,11 +77,9 @@ module Email # always set a default Message ID from the host @message.header['Message-ID'] = "<#{SecureRandom.uuid}@#{host}>" - if topic_id.present? - email_log.topic_id = topic_id - - post = Post.find_by(id: post_id) - topic = Topic.find_by(id: topic_id) + if topic_id.present? && post_id.present? + post = Post.find_by(id: post_id, topic_id: topic_id) + topic = post.topic first_post = topic.ordered_posts.first topic_message_id = first_post.incoming_email&.message_id.present? ? diff --git a/spec/components/email/sender_spec.rb b/spec/components/email/sender_spec.rb index 65838ab1d06..5fad20d13b2 100644 --- a/spec/components/email/sender_spec.rb +++ b/spec/components/email/sender_spec.rb @@ -316,7 +316,7 @@ describe Email::Sender do it 'should create the right log' do email_sender.send expect(email_log.post_id).to eq(post.id) - expect(email_log.topic_id).to eq(topic.id) + expect(email_log.topic.id).to eq(topic.id) end end