aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-11 17:26:51 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:49 +0200
commit31e4c19331c9262574d354250675bba7dcf9dba2 (patch)
treeda9d03e5fc42c874f42fbdd68e9a5fc798bbd260 /activerecord
parent0938d5305758dfcbec4e813c777bb627e82a5906 (diff)
downloadrails-31e4c19331c9262574d354250675bba7dcf9dba2.tar.gz
rails-31e4c19331c9262574d354250675bba7dcf9dba2.tar.bz2
rails-31e4c19331c9262574d354250675bba7dcf9dba2.zip
fk: `add/remove_foreign_key` are noop for adapters that don't support fk
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb4
-rw-r--r--activerecord/test/cases/migration/foreign_key_test.rb24
2 files changed, 28 insertions, 0 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 5a863717e5..4da42717c1 100644
--- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb
@@ -647,6 +647,8 @@ module ActiveRecord
end
def add_foreign_key(from_table, to_table, options = {})
+ return unless supports_foreign_keys?
+
options[:column] ||= foreign_key_column_for(to_table)
primary_key = options.fetch(:primary_key, "id")
@@ -664,6 +666,8 @@ module ActiveRecord
end
def remove_foreign_key(from_table, options_or_to_table = {})
+ return unless supports_foreign_keys?
+
if options_or_to_table.is_a?(Hash)
options = options_or_to_table
else
diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb
index 815c6b2955..7dad67ef88 100644
--- a/activerecord/test/cases/migration/foreign_key_test.rb
+++ b/activerecord/test/cases/migration/foreign_key_test.rb
@@ -202,4 +202,28 @@ module ActiveRecord
end
end
end
+else
+module ActiveRecord
+ class Migration
+ class NoForeignKeySupportTest < ActiveRecord::TestCase
+ setup do
+ @connection = ActiveRecord::Base.connection
+ end
+
+ def test_add_foreign_key_should_be_noop
+ @connection.add_foreign_key :clubs, :categories
+ end
+
+ def test_remove_foreign_key_should_be_noop
+ @connection.remove_foreign_key :clubs, :categories
+ end
+
+ def test_foreign_keys_should_raise_not_implemented
+ assert_raises NotImplementedError do
+ @connection.foreign_keys("clubs")
+ end
+ end
+ end
+ end
+end
end