Skip to content

Commit

Permalink
Merge pull request rails#52666 from Shopify/dedup-foreign-key
Browse files Browse the repository at this point in the history
Deduplicate derived foreign keys
  • Loading branch information
byroot authored Aug 21, 2024
2 parents daaa87c + e9b3d05 commit c3d8dc4
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions activerecord/lib/active_record/reflection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -562,20 +562,25 @@ def join_table
def foreign_key(infer_from_inverse_of: true)
@foreign_key ||= if options[:foreign_key]
if options[:foreign_key].is_a?(Array)
options[:foreign_key].map { |fk| fk.to_s.freeze }.freeze
options[:foreign_key].map { |fk| -fk.to_s.freeze }.freeze
else
options[:foreign_key].to_s.freeze
end
elsif options[:query_constraints]
options[:query_constraints].map { |fk| fk.to_s.freeze }.freeze
options[:query_constraints].map { |fk| -fk.to_s.freeze }.freeze
else
derived_fk = derive_foreign_key(infer_from_inverse_of: infer_from_inverse_of)

if active_record.has_query_constraints?
derived_fk = derive_fk_query_constraints(derived_fk)
end

derived_fk
if derived_fk.is_a?(Array)
derived_fk.map! { |fk| -fk.freeze }
derived_fk.freeze
else
-derived_fk.freeze
end
end
end

Expand Down

0 comments on commit c3d8dc4

Please sign in to comment.