From 3b70153822f159a1566a0f3401913bbb7781c18e Mon Sep 17 00:00:00 2001
From: ArtOfCode- <hello@artofcode.co.uk>
Date: Mon, 1 Jun 2020 19:24:36 +0100
Subject: [PATCH] Stop trying to get tags for every post

---
 app/helpers/tags_helper.rb         |  7 +++++++
 app/models/tag.rb                  | 10 ----------
 app/views/posts/_expanded.html.erb |  2 +-
 app/views/posts/_list.html.erb     |  2 +-
 4 files changed, 9 insertions(+), 12 deletions(-)
 create mode 100644 app/helpers/tags_helper.rb

diff --git a/app/helpers/tags_helper.rb b/app/helpers/tags_helper.rb
new file mode 100644
index 000000000..b736dc078
--- /dev/null
+++ b/app/helpers/tags_helper.rb
@@ -0,0 +1,7 @@
+module TagsHelper
+  def category_sort_tags(tags, required_ids, topic_ids)
+    tags
+      .to_a
+      .sort_by { |t| [required_ids.include?(t.id) ? 0 : 1, topic_ids.include?(t.id) ? 0 : 1, t.id] }
+  end
+end
\ No newline at end of file
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 830f39817..65024e43b 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -1,16 +1,6 @@
 class Tag < ApplicationRecord
   include CommunityRelated
 
-  scope :category_order, lambda { |required_ids, topic_ids|
-    order(Arel.sql("tags.id IN #{sanitize_sql_in(required_ids)} DESC"),
-          Arel.sql("tags.id IN #{sanitize_sql_in(topic_ids)} DESC"),
-          name: :asc)
-  }
-
-  scope :category_sort_by, lambda { |required_ids, topic_ids|
-    sort_by { |t| [required_ids.include?(t.id) ? 0 : 1, topic_ids.include?(t.id) ? 0 : 1, t.id] }
-  }
-
   has_and_belongs_to_many :posts
   belongs_to :tag_set
 
diff --git a/app/views/posts/_expanded.html.erb b/app/views/posts/_expanded.html.erb
index 08e20ebe4..7c40682cd 100644
--- a/app/views/posts/_expanded.html.erb
+++ b/app/views/posts/_expanded.html.erb
@@ -100,7 +100,7 @@
               <% tag_set = post.tag_set %>
               <% required_ids = post.category&.required_tag_ids %>
               <% topic_ids = post.category&.topic_tag_ids %>
-              <% post.tags.category_sort_by(required_ids, topic_ids).each do |tag| %>
+              <% category_sort_tags(post.tags, required_ids, topic_ids).each do |tag| %>
                 <% next if tag.nil? %>
                 <% required = required_ids&.include? tag.id %>
                 <% topic = topic_ids&.include? tag.id %>
diff --git a/app/views/posts/_list.html.erb b/app/views/posts/_list.html.erb
index 29a6b60cf..57312cf0c 100644
--- a/app/views/posts/_list.html.erb
+++ b/app/views/posts/_list.html.erb
@@ -29,7 +29,7 @@
         <% tag_set = post.tag_set %>
         <% required_ids = defined?(@category) ? @category&.required_tag_ids : post.category&.required_tag_ids %>
         <% topic_ids = defined?(@category) ? @category&.topic_tag_ids : post.category&.topic_tag_ids %>
-        <% post.tags.category_sort_by(required_ids, topic_ids).each do |tag| %>
+        <% category_sort_tags(post.tags, required_ids, topic_ids).each do |tag| %>
           <% required = required_ids&.include? tag.id %>
           <% topic = topic_ids&.include? tag.id %>
           <%= link_to tag.name, questions_tagged_path(tag_set: tag_set.id, tag: tag.name),
-- 
GitLab