diff --git a/app/models/topic.rb b/app/models/topic.rb index 7e4219e15dc..e2c6434c2ba 100644 --- a/app/models/topic.rb +++ b/app/models/topic.rb @@ -586,11 +586,14 @@ class Topic < ActiveRecord::Base ) end if SiteSetting.digest_suppress_tags.present? - topics = - topics.joins("LEFT JOIN topic_tags tg ON topics.id = tg.topic_id").where( - "tg.tag_id NOT IN (?) OR tg.tag_id IS NULL", - SiteSetting.digest_suppress_tags.split("|").map(&:to_i), - ) + tag_ids = Tag.where_name(SiteSetting.digest_suppress_tags.split("|")).pluck(:id) + if tag_ids.present? + topics = + topics.joins("LEFT JOIN topic_tags tg ON topics.id = tg.topic_id").where( + "tg.tag_id NOT IN (?) OR tg.tag_id IS NULL", + tag_ids, + ) + end end remove_category_ids << SiteSetting.shared_drafts_category if SiteSetting.shared_drafts_enabled? if remove_category_ids.present? diff --git a/spec/models/topic_spec.rb b/spec/models/topic_spec.rb index e902ea49cc6..4cdefea3625 100644 --- a/spec/models/topic_spec.rb +++ b/spec/models/topic_spec.rb @@ -2368,9 +2368,10 @@ RSpec.describe Topic do topic = Fabricate(:topic, category: category, created_at: 1.minute.ago) topic2 = Fabricate(:topic, category: category, created_at: 1.minute.ago) tag = Fabricate(:tag) + tag2 = Fabricate(:tag) Fabricate(:topic_tag, topic: topic, tag: tag) - SiteSetting.digest_suppress_tags = "#{tag.id}" + SiteSetting.digest_suppress_tags = "#{tag.name}|#{tag2.name}" topics = Topic.for_digest(user, 1.year.ago, top_order: true) expect(topics).to eq([topic2])