aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb37
1 files changed, 30 insertions, 7 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 55e3fb4477..da6b15dad0 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -625,13 +625,6 @@ 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.
#
@@ -649,6 +642,36 @@ module ActiveRecord
end
alias :remove_belongs_to :remove_reference
+ def foreign_keys(table_name)
+ raise NotImplementedError, "foreign_keys is not implemented"
+ end
+
+ def add_foreign_key(from_table, to_table, options = {})
+ options = {
+ column: options.fetch(:column),
+ primary_key: "id",
+ name: foreign_key_name(from_table, options)
+ }
+ at = create_alter_table from_table
+ at.add_foreign_key to_table, options
+
+ execute schema_creation.accept at
+ end
+
+ def remove_foreign_key(from_table, options = {})
+ at = create_alter_table from_table
+ at.drop_foreign_key foreign_key_name(from_table, options)
+
+ execute schema_creation.accept at
+ end
+
+ def foreign_key_name(table_name, options) # :nodoc:
+ options.fetch(:name) do
+ column_name = options.fetch(:column)
+ "#{table_name}_#{column_name}_fk"
+ end
+ end
+
def dump_schema_information #:nodoc:
sm_table = ActiveRecord::Migrator.schema_migrations_table_name