aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2017-05-24 13:57:42 +0930
committerGitHub <noreply@github.com>2017-05-24 13:57:42 +0930
commitcceee994bdcff6d3f6c1c225e209dbff1152fdbb (patch)
tree0c18e8bdf263de0bf2963ded1a6b5a974a92458f /activerecord
parentef763d6933e35f1c4700597e7489f748a53c9390 (diff)
parent1aad9f6b5b610a487f248268b464fbbd74c82531 (diff)
downloadrails-cceee994bdcff6d3f6c1c225e209dbff1152fdbb.tar.gz
rails-cceee994bdcff6d3f6c1c225e209dbff1152fdbb.tar.bz2
rails-cceee994bdcff6d3f6c1c225e209dbff1152fdbb.zip
Merge pull request #29145 from kamipo/reference_type_should_be_not_null
Both reference id and type should be `NOT NULL` if `null: false` is specified
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb2
-rw-r--r--activerecord/test/cases/migration/references_statements_test.rb8
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)