Include badge before serializing (#16160)
We are loading the badge for each included tag in the Search::TagSerializer and seeing warnings from bullet ``` Bullet::Notification::UnoptimizedQueryError: GET /search/tags?name=ta USE eager loading detected Tag => [:badge] Add to your query: .includes([:badge]) Call stack /home/travis/build/forem/forem/app/serializers/search/tag_serializer.rb:5:in `block in <class:TagSerializer>' /home/travis/build/forem/forem/app/services/search/tag.rb:11:in `serialize' /home/travis/build/forem/forem/app/services/search/tag.rb:7:in `search_documents' /home/travis/build/forem/forem/app/controllers/search_controller.rb:54:in `tags' /home/travis/build/forem/forem/app/lib/middlewares/set_time_zone.rb:10:in `call' ``` Follow the advice, now when multiple tags are in the result set, having multiple badges, badges are loaded only once (at query time) and not one by one (at serialization time).
This commit is contained in:
parent
e1a88d6f81
commit
f90459d163
1 changed files with 1 additions and 1 deletions
|
|
@ -3,7 +3,7 @@ module Search
|
|||
ATTRIBUTES = %i[id name hotness_score rules_html supported short_summary bg_color_hex badge_id].freeze
|
||||
|
||||
def self.search_documents(term)
|
||||
results = ::Tag.search_by_name(term).supported.reorder(hotness_score: :desc).select(*ATTRIBUTES)
|
||||
results = ::Tag.search_by_name(term).supported.includes(:badge).reorder(hotness_score: :desc).select(*ATTRIBUTES)
|
||||
serialize(results)
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue