aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
index 18e73b0200..5a863717e5 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -682,7 +682,11 @@ module ActiveRecord
def foreign_key_name(table_name, options) # :nodoc:
options.fetch(:name) do
- "#{table_name}_#{options.fetch(:column)}_fk"
+ identifier = "#{table_name}_#{options.fetch(:column)}_fk"
+ if identifier.length > allowed_index_name_length
+ raise ArgumentError, "Foreign key name '#{identifier}' is too long; the limit is #{allowed_index_name_length} characters"
+ end
+ identifier
end
end