From c342c0dac256f8499347e71dbf72f7d793a6ced8 Mon Sep 17 00:00:00 2001 From: MAEDA Go Date: Tue, 25 Aug 2026 17:33:31 +0900 Subject: [PATCH 2/2] Use cached builtin group instances in User#roles and User#project_ids_by_role to avoid repeated queries for users without roles --- app/models/user.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 2fc6b8353..8ef509d25 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -649,10 +649,10 @@ class User < Principal where(Member.arel_table[:user_id].eq(id)).distinct if @roles.blank? - group_class = anonymous? ? GroupAnonymous : GroupNonMember + group = anonymous? ? Group.anonymous : Group.non_member @roles = Role.joins(members: :project). where(["#{Project.table_name}.status <> ? AND #{Project.table_name}.is_public = ?", Project::STATUS_ARCHIVED, true]). - where(Member.arel_table[:user_id].eq(group_class.first.id)).distinct + where(Member.arel_table[:user_id].eq(group.id)).distinct end @roles @@ -698,8 +698,8 @@ class User < Principal Project.unscoped do return @project_ids_by_role if @project_ids_by_role - group_class = anonymous? ? GroupAnonymous.unscoped : GroupNonMember.unscoped - group_id = group_class.pick(:id) + group = anonymous? ? Group.anonymous : Group.non_member + group_id = group.id members = Member.joins(:project, :member_roles). where("#{Project.table_name}.status <> 9"). -- 2.55.0