From ae4fad8e32e691dd0f7f1c754aa7f6c8fcde8de8 Mon Sep 17 00:00:00 2001 From: Martin Schneider Date: Tue, 15 Jul 2025 21:51:33 +0200 Subject: [PATCH] Added support for :primary_key in sorting on relationships Fixes ActiveRecord::StatementInvalid (PG::UndefinedFunction: ERROR: operator does not exist: uuid = character varying when uuid and string ids are mixed --- lib/jsonapi/resource.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/jsonapi/resource.rb b/lib/jsonapi/resource.rb index 6fa78dffb..95ebf6a65 100644 --- a/lib/jsonapi/resource.rb +++ b/lib/jsonapi/resource.rb @@ -735,7 +735,8 @@ def _build_joins(associations) joins = [] associations.inject do |prev, current| - joins << "LEFT JOIN #{current.table_name} AS #{current.name}_sorting ON #{current.name}_sorting.id = #{prev.table_name}.#{current.foreign_key}" + relationship_primary_key = current.options.fetch(:primary_key, "id") + joins << "LEFT JOIN #{current.table_name} AS #{current.name}_sorting ON #{current.name}_sorting.#{relationship_primary_key} = #{prev.table_name}.#{current.foreign_key}" current end joins.join("\n")