FIX: automatically in/decrement topic_tags.pm_topic_count

This commit is contained in:
Régis Hanol 2018-05-15 16:05:48 +02:00
parent be891e1c2e
commit a512b181d9
2 changed files with 21 additions and 15 deletions

View File

@ -3,11 +3,14 @@ class TopicTag < ActiveRecord::Base
belongs_to :tag
after_create do
if topic && topic.archetype != Archetype.private_message
if topic
if topic.archetype == Archetype.private_message
tag.increment!(:pm_topic_count)
else
tag.increment!(:topic_count)
if topic.category_id
if stat = CategoryTagStat.where(tag_id: tag_id, category_id: topic.category_id).first
if stat = CategoryTagStat.find_by(tag_id: tag_id, category_id: topic.category_id)
stat.increment!(:topic_count)
else
CategoryTagStat.create(tag_id: tag_id, category_id: topic.category_id, topic_count: 1)
@ -15,16 +18,21 @@ class TopicTag < ActiveRecord::Base
end
end
end
end
after_destroy do
if topic && topic.archetype != Archetype.private_message
if topic.category_id && stat = CategoryTagStat.where(tag_id: tag_id, category: topic.category_id).first
if topic
if topic.archetype == Archetype.private_message
tag.decrement!(:pm_topic_count)
else
if topic.category_id && stat = CategoryTagStat.find_by(tag_id: tag_id, category: topic.category_id)
stat.topic_count == 1 ? stat.destroy : stat.decrement!(:topic_count)
end
tag.decrement!(:topic_count)
end
end
end
end
# == Schema Information

View File

@ -181,9 +181,7 @@ module DiscourseTagging
end
def self.hidden_tag_names(guardian = nil)
return [] if guardian&.is_staff?
hidden_tags_query.pluck(:name)
guardian&.is_staff? ? [] : hidden_tags_query.pluck(:name)
end
def self.hidden_tags_query