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