Skip to content

Commit c3d8dc4

Browse files
authored
Merge pull request rails#52666 from Shopify/dedup-foreign-key
Deduplicate derived foreign keys
2 parents daaa87c + e9b3d05 commit c3d8dc4

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

activerecord/lib/active_record/reflection.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -562,20 +562,25 @@ def join_table
562562
def foreign_key(infer_from_inverse_of: true)
563563
@foreign_key ||= if options[:foreign_key]
564564
if options[:foreign_key].is_a?(Array)
565-
options[:foreign_key].map { |fk| fk.to_s.freeze }.freeze
565+
options[:foreign_key].map { |fk| -fk.to_s.freeze }.freeze
566566
else
567567
options[:foreign_key].to_s.freeze
568568
end
569569
elsif options[:query_constraints]
570-
options[:query_constraints].map { |fk| fk.to_s.freeze }.freeze
570+
options[:query_constraints].map { |fk| -fk.to_s.freeze }.freeze
571571
else
572572
derived_fk = derive_foreign_key(infer_from_inverse_of: infer_from_inverse_of)
573573

574574
if active_record.has_query_constraints?
575575
derived_fk = derive_fk_query_constraints(derived_fk)
576576
end
577577

578-
derived_fk
578+
if derived_fk.is_a?(Array)
579+
derived_fk.map! { |fk| -fk.freeze }
580+
derived_fk.freeze
581+
else
582+
-derived_fk.freeze
583+
end
579584
end
580585
end
581586

0 commit comments

Comments
 (0)