aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/migration/references_statements_test.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-03-04 16:47:43 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-03-04 17:14:15 +0900
commit465357aecfcfd5ae0b1f95b8a848e38ac868999d (patch)
tree9b3fe0c4d171a19bdaf47bf26903c24badb95b26 /activerecord/test/cases/migration/references_statements_test.rb
parentfd3c6eadbbc1fbd4782138a28a87cb96df3ca450 (diff)
downloadrails-465357aecfcfd5ae0b1f95b8a848e38ac868999d.tar.gz
rails-465357aecfcfd5ae0b1f95b8a848e38ac868999d.tar.bz2
rails-465357aecfcfd5ae0b1f95b8a848e38ac868999d.zip
Don't share `options` with a reference type column
Sharing `options` causes some unexpected behavior. If `limit: 2` is specified, this means that 2 bytes integer for a reference id column and 2 chars string for a reference type column. Another example, if `unsigned: true` is specified, this means that unsigned integer for a reference id column, but a invalid option for a reference type column. So `options` should not be shared with a reference type column.
Diffstat (limited to 'activerecord/test/cases/migration/references_statements_test.rb')
-rw-r--r--activerecord/test/cases/migration/references_statements_test.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/references_statements_test.rb b/activerecord/test/cases/migration/references_statements_test.rb
index df15d7cb45..06c44c8c52 100644
--- a/activerecord/test/cases/migration/references_statements_test.rb
+++ b/activerecord/test/cases/migration/references_statements_test.rb
@@ -50,6 +50,13 @@ module ActiveRecord
assert column_exists?(table_name, :taggable_type, :string, default: "Photo")
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)
+ assert column_exists?(table_name, :taggable_type, :string)
+ assert_not column_exists?(table_name, :taggable_type, :string, limit: 2)
+ end
+
def test_creates_named_index
add_reference table_name, :tag, index: { name: "index_taggings_on_tag_id" }
assert index_exists?(table_name, :tag_id, name: "index_taggings_on_tag_id")