From 8cf28048a494a45a9facf981f2fb383ebe9956ec Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Tue, 27 Sep 2022 09:30:07 +0000 Subject: [PATCH] Adds missing join when ordering by authsource (#37674). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch by Jens Krämer. git-svn-id: https://svn.redmine.org/redmine/trunk@21856 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/user_query.rb | 12 ++++++++++++ test/unit/user_query_test.rb | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/app/models/user_query.rb b/app/models/user_query.rb index 95572db10..ee2d1e059 100644 --- a/app/models/user_query.rb +++ b/app/models/user_query.rb @@ -153,4 +153,16 @@ class UserQuery < Query #{sql_for_field(:mail, operator, value, emails, 'address')}) SQL end + + def joins_for_order_statement(order_options) + joins = [super] + + if order_options + if order_options.include?('auth_source') + joins << "LEFT OUTER JOIN #{AuthSource.table_name} auth_sources ON auth_sources.id = #{queried_table_name}.auth_source_id" + end + end + + joins.any? ? joins.join(' ') : nil + end end diff --git a/test/unit/user_query_test.rb b/test/unit/user_query_test.rb index d014ab0be..0e67370e9 100644 --- a/test/unit/user_query_test.rb +++ b/test/unit/user_query_test.rb @@ -169,6 +169,19 @@ class UserQueryTest < ActiveSupport::TestCase assert_not users.map(&:id).include? 1 end + def test_auth_source_ordering + user = User.find(1) + user.update_column :auth_source_id, 1 + + q = UserQuery.new name: '_' + q.column_names = ['id', 'auth_source.name'] + q.sort_criteria = 'auth_source.name' + + users = q.results_scope + assert users.many? + assert_equal user, users.last + end + def find_users_with_query(query) User.where(query.statement).to_a end