Fix N+1 query when rendering with StatusSerializer (#15641)

This commit is contained in:
abcang 2021-02-01 05:24:17 +09:00 committed by Claire
parent 02d195809b
commit 47cab05003

View file

@ -114,7 +114,7 @@ class Status < ApplicationRecord
:tags, :tags,
:preview_cards, :preview_cards,
:preloadable_poll, :preloadable_poll,
account: :account_stat, account: [:account_stat, :user],
active_mentions: { account: :account_stat }, active_mentions: { account: :account_stat },
reblog: [ reblog: [
:application, :application,
@ -124,7 +124,7 @@ class Status < ApplicationRecord
:conversation, :conversation,
:status_stat, :status_stat,
:preloadable_poll, :preloadable_poll,
account: :account_stat, account: [:account_stat, :user],
active_mentions: { account: :account_stat }, active_mentions: { account: :account_stat },
], ],
thread: { account: :account_stat } thread: { account: :account_stat }
@ -301,7 +301,7 @@ class Status < ApplicationRecord
return if account_ids.empty? return if account_ids.empty?
accounts = Account.where(id: account_ids).includes(:account_stat).each_with_object({}) { |a, h| h[a.id] = a } accounts = Account.where(id: account_ids).includes(:account_stat, :user).index_by(&:id)
cached_items.each do |item| cached_items.each do |item|
item.account = accounts[item.account_id] item.account = accounts[item.account_id]