diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-06-11 17:26:51 +0200 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-06-26 22:03:49 +0200 |
commit | 31e4c19331c9262574d354250675bba7dcf9dba2 (patch) | |
tree | da9d03e5fc42c874f42fbdd68e9a5fc798bbd260 | |
parent | 0938d5305758dfcbec4e813c777bb627e82a5906 (diff) | |
download | rails-31e4c19331c9262574d354250675bba7dcf9dba2.tar.gz rails-31e4c19331c9262574d354250675bba7dcf9dba2.tar.bz2 rails-31e4c19331c9262574d354250675bba7dcf9dba2.zip |
fk: `add/remove_foreign_key` are noop for adapters that don't support fk
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb | 4 | ||||
-rw-r--r-- | activerecord/test/cases/migration/foreign_key_test.rb | 24 |
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 |