]> source.dussan.org Git - redmine.git/commitdiff
Adds missing join when ordering by authsource (#37674).
authorGo MAEDA <maeda@farend.jp>
Tue, 27 Sep 2022 09:30:07 +0000 (09:30 +0000)
committerGo MAEDA <maeda@farend.jp>
Tue, 27 Sep 2022 09:30:07 +0000 (09:30 +0000)
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
test/unit/user_query_test.rb

index 95572db10fd10601bd29b2cbe3c3b468d99b3bed..ee2d1e059577c2bbeb87301d4ebf5ced8879f517 100644 (file)
@@ -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
index d014ab0be91b6464be45e61539abfda2a65da375..0e67370e9afb574b83c94496095b72b0e0c041e6 100644 (file)
@@ -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