diff options
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/migration/compatibility_test.rb | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index c72db15ce3..a8c3318905 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -297,7 +297,7 @@ module ActiveRecord end def add_column(table_name, column_name, type, options = {}) #:nodoc: - if valid_alter_table_type?(type) + if valid_alter_table_type?(type) && !options[:primary_key] super(table_name, column_name, type, options) else alter_table(table_name) do |definition| diff --git a/activerecord/test/cases/migration/compatibility_test.rb b/activerecord/test/cases/migration/compatibility_test.rb index cc2391f349..eb6d65d1b1 100644 --- a/activerecord/test/cases/migration/compatibility_test.rb +++ b/activerecord/test/cases/migration/compatibility_test.rb @@ -267,6 +267,25 @@ module LegacyPrimaryKeyTestCases end end + if current_adapter?(:SQLite3Adapter) + def test_add_column_with_legacy_primary_key_should_work + @migration = Class.new(migration_class) { + def change + create_table :legacy_primary_keys, id: false do |t| + t.integer :dummy + end + add_column :legacy_primary_keys, :id, :primary_key + end + }.new + + @migration.migrate(:up) + + assert_equal "id", LegacyPrimaryKey.primary_key + legacy_pk = LegacyPrimaryKey.columns_hash["id"] + assert_not legacy_pk.null + end + end + def test_legacy_join_table_foreign_keys_should_be_integer @migration = Class.new(migration_class) { def change |