aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-10 11:10:54 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:48 +0200
commit74b2fe4c0febe051cb48c7c25a565333ddf22bce (patch)
tree0bb9b17ca835c88c02502c903ca9799c8f195dd2 /activerecord/lib/active_record/connection_adapters/abstract
parent09b3a2847ca51d0e5dcebcb636d8770b19c397a7 (diff)
downloadrails-74b2fe4c0febe051cb48c7c25a565333ddf22bce.tar.gz
rails-74b2fe4c0febe051cb48c7c25a565333ddf22bce.tar.bz2
rails-74b2fe4c0febe051cb48c7c25a565333ddf22bce.zip
fk: `foreign_keys`, `add_foreign_key` and `remove_foreign_key` for MySQL
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb14
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb7
2 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
index a9b3e9cfb9..b132543332 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb
@@ -25,6 +25,20 @@ module ActiveRecord
class ChangeColumnDefinition < Struct.new(:column, :type, :options) #:nodoc:
end
+ class ForeignKeyDefinition < Struct.new(:from_table, :to_table, :options)
+ def name
+ options[:name]
+ end
+
+ def column
+ options[:column]
+ end
+
+ def primary_key
+ options[:primary_key]
+ end
+ end
+
# Represents the schema of an SQL table in an abstract way. This class
# provides methods for manipulating the schema representation.
#
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 22823a8c58..55e3fb4477 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -625,6 +625,13 @@ module ActiveRecord
end
alias :add_belongs_to :add_reference
+ def foreign_key_name(table_name, options)
+ options.fetch(:name) do
+ column_name = options.fetch(:column)
+ "#{table_name}_#{column_name}_fk"
+ end
+ end
+
# Removes the reference(s). Also removes a +type+ column if one exists.
# <tt>remove_reference</tt>, <tt>remove_references</tt> and <tt>remove_belongs_to</tt> are acceptable.
#