aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-11 11:16:31 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:49 +0200
commit9ae1a2c69f51a9065090a9c505f4d22ffbb84094 (patch)
tree31ed0a7a6935e26c8a98809678eb12bede9dc68c /activerecord/lib/active_record/connection_adapters
parentacd0287dc18a3fbba6fa4301cb31a7aecd22922b (diff)
downloadrails-9ae1a2c69f51a9065090a9c505f4d22ffbb84094.tar.gz
rails-9ae1a2c69f51a9065090a9c505f4d22ffbb84094.tar.bz2
rails-9ae1a2c69f51a9065090a9c505f4d22ffbb84094.zip
fk: raise when identifiers are longer than `allowed_index_name_length`.
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