From 508c1fd5481cc079dcfe59b8729d615ed345b91b Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Wed, 2 Apr 2025 09:22:35 +0000 Subject: Improve performance of `TimeEntry#assignable_users` by reducing SQL queries (#35927). Patch by Go MAEDA (user:maeda). git-svn-id: https://svn.redmine.org/redmine/trunk@23595 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/time_entry.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/models/time_entry.rb b/app/models/time_entry.rb index 4a3a79987..f20958894 100644 --- a/app/models/time_entry.rb +++ b/app/models/time_entry.rb @@ -243,8 +243,11 @@ class TimeEntry < ApplicationRecord def assignable_users users = [] if project - users = project.members.active.preload(:user) - users = users.map(&:user).select{|u| u.allowed_to?(:log_time, project)} + user_ids = + project.members.active.preload(:roles).filter_map do |m| + m.roles.any? {|role| role.allowed_to?(:log_time)} ? m.user_id : nil + end.uniq + users = User.where(:id => user_ids).sorted.to_a end users << User.current if User.current.logged? && !users.include?(User.current) users -- cgit v1.2.3