Skip to content

Commit a3ade5d

Browse files
committed
change(annotate_models#get_foreign_key_info): elide auto-generated fk names
Closes #404.
1 parent 2d0c22d commit a3ade5d

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

lib/annotate/annotate_models.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -355,17 +355,19 @@ def get_foreign_key_info(klass, options={})
355355
foreign_keys = klass.connection.foreign_keys(klass.table_name)
356356
return '' if foreign_keys.empty?
357357

358-
max_size = foreign_keys.collect{|fk| fk.name.size}.max + 1
359-
foreign_keys.sort_by(&:name).each do |fk|
358+
format_name = ->(fk) { fk.name.gsub(/(?<=^fk_rails_)[0-9a-f]{10}$/, '...') }
359+
360+
max_size = foreign_keys.map(&format_name).map(&:size).max + 1
361+
foreign_keys.sort_by {|fk| [format_name.call(fk), fk.column]}.each do |fk|
360362
ref_info = "#{fk.column} => #{fk.to_table}.#{fk.primary_key}"
361363
constraints_info = ''
362364
constraints_info += "ON DELETE => #{fk.on_delete} " if fk.on_delete
363365
constraints_info += "ON UPDATE => #{fk.on_update} " if fk.on_update
364366
constraints_info.strip!
365367
if options[:format_markdown]
366-
fk_info << sprintf("# * `%s`%s:\n# * **`%s`**\n", fk.name, constraints_info.blank? ? '' : " (_#{constraints_info}_)", ref_info)
368+
fk_info << sprintf("# * `%s`%s:\n# * **`%s`**\n", format_name.call(fk), constraints_info.blank? ? '' : " (_#{constraints_info}_)", ref_info)
367369
else
368-
fk_info << sprintf("# %-#{max_size}.#{max_size}s %s %s", fk.name, "(#{ref_info})", constraints_info).rstrip + "\n"
370+
fk_info << sprintf("# %-#{max_size}.#{max_size}s %s %s", format_name.call(fk), "(#{ref_info})", constraints_info).rstrip + "\n"
369371
end
370372
end
371373

spec/annotate/annotate_models_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,9 +209,9 @@ def mock_column(name, type, options={})
209209
#
210210
# Foreign Keys
211211
#
212-
# custom_fk_name (other_thing_id => other_things.id)
213-
# fk_rails_a70234b26c (third_thing_id => third_things.id)
214-
# fk_rails_cf2568e89e (foreign_thing_id => foreign_things.id)
212+
# custom_fk_name (other_thing_id => other_things.id)
213+
# fk_rails_... (foreign_thing_id => foreign_things.id)
214+
# fk_rails_... (third_thing_id => third_things.id)
215215
#
216216
EOS
217217
end
@@ -241,7 +241,7 @@ def mock_column(name, type, options={})
241241
#
242242
# Foreign Keys
243243
#
244-
# fk_rails_02e851e3b7 (foreign_thing_id => foreign_things.id) ON DELETE => on_delete_value ON UPDATE => on_update_value
244+
# fk_rails_... (foreign_thing_id => foreign_things.id) ON DELETE => on_delete_value ON UPDATE => on_update_value
245245
#
246246
EOS
247247
end

0 commit comments

Comments
 (0)