diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-05-19 13:28:30 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-05-19 13:28:30 +0900 |
commit | 1aad9f6b5b610a487f248268b464fbbd74c82531 (patch) | |
tree | 367141b958a89fb1986df881e9a3e8d6d406c979 | |
parent | b9b4fa9154e7c81ddb2bac4c5d53a9cb98c3351e (diff) | |
download | rails-1aad9f6b5b610a487f248268b464fbbd74c82531.tar.gz rails-1aad9f6b5b610a487f248268b464fbbd74c82531.tar.bz2 rails-1aad9f6b5b610a487f248268b464fbbd74c82531.zip |
Both reference id and type should be `NOT NULL` if `null: false` is specified
This is a regression due to #28282.
Fixes #29136.
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/migration/references_statements_test.rb | 8 |
2 files changed, 9 insertions, 1 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 46d7f84efd..a30fbe0e05 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb @@ -146,7 +146,7 @@ module ActiveRecord end def polymorphic_options - as_options(polymorphic) + as_options(polymorphic).merge(null: options[:null]) end def index_options diff --git a/activerecord/test/cases/migration/references_statements_test.rb b/activerecord/test/cases/migration/references_statements_test.rb index 06c44c8c52..e9eb9968cb 100644 --- a/activerecord/test/cases/migration/references_statements_test.rb +++ b/activerecord/test/cases/migration/references_statements_test.rb @@ -50,6 +50,14 @@ module ActiveRecord assert column_exists?(table_name, :taggable_type, :string, default: "Photo") end + def test_creates_reference_type_column_with_not_null + connection.create_table table_name, force: true do |t| + t.references :taggable, null: false, polymorphic: true + end + assert column_exists?(table_name, :taggable_id, :integer, null: false) + assert column_exists?(table_name, :taggable_type, :string, null: false) + end + def test_does_not_share_options_with_reference_type_column add_reference table_name, :taggable, type: :integer, limit: 2, polymorphic: true assert column_exists?(table_name, :taggable_id, :integer, limit: 2) |