From 039652a916fd988d4bb0a28da350d0141c47b173 Mon Sep 17 00:00:00 2001 From: Jens Kraemer Date: Tue, 27 Sep 2022 03:39:45 +0200 Subject: [PATCH] adds missing join when ordering by authsource #37674 --- 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 95572db10f..ee2d1e0595 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 d014ab0be9..0e67370e9a 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 -- 2.30.2