From 1197750e7df1ba02da5005e6b0025cc1a0e11d08 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan Date: Tue, 1 Aug 2017 17:26:03 +0900 Subject: [PATCH] PERF: Allow plugins to preload custom fields for topics in `CategoryList`. --- app/models/category_list.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/models/category_list.rb b/app/models/category_list.rb index ddf9ab5880b..6e98f9bc0a8 100644 --- a/app/models/category_list.rb +++ b/app/models/category_list.rb @@ -3,6 +3,9 @@ require_dependency 'pinned_check' class CategoryList include ActiveModel::Serialization + cattr_accessor :preloaded_topic_custom_fields + self.preloaded_topic_custom_fields = Set.new + attr_accessor :categories, :uncategorized, :draft, @@ -20,6 +23,13 @@ class CategoryList find_user_data sort_unpinned trim_results + + if preloaded_topic_custom_fields.present? + Topic.preload_custom_fields( + @categories.map(&:displayable_topics).flatten, + preloaded_topic_custom_fields + ) + end end def preload_key