1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Merge pull request #30655 from kuzukuzu/fix_create_join_table_compatibility

make create_join_table compatible.
This commit is contained in:
Ryuta Kamizono 2017-09-20 12:37:06 +09:00 committed by GitHub
commit 918115148d
2 changed files with 45 additions and 0 deletions

View file

@ -71,6 +71,21 @@ module ActiveRecord
end
end
def create_join_table(table_1, table_2, column_options: {}, **options)
column_options.reverse_merge!(type: :integer)
if block_given?
super(table_1, table_2, column_options: column_options, **options) do |t|
class << t
prepend TableDefinition
end
yield t
end
else
super
end
end
def add_reference(table_name, ref_name, **options)
super(table_name, ref_name, type: :integer, **options)
end

View file

@ -199,6 +199,36 @@ class LegacyPrimaryKeyTest < ActiveRecord::TestCase
assert_match %r{create_table "legacy_primary_keys", id: :integer, default: nil}, schema
end
def test_legacy_join_table_foreign_keys_should_be_integer
@migration = Class.new(ActiveRecord::Migration[5.0]) {
def change
create_join_table :apples, :bananas do |t|
end
end
}.new
@migration.migrate(:up)
schema = dump_table_schema "apples_bananas"
assert_match %r{integer "apple_id", null: false}, schema
assert_match %r{integer "banana_id", null: false}, schema
end
def test_legacy_join_table_column_options_should_be_overwritten
@migration = Class.new(ActiveRecord::Migration[5.0]) {
def change
create_join_table :apples, :bananas, column_options: { type: :bigint } do |t|
end
end
}.new
@migration.migrate(:up)
schema = dump_table_schema "apples_bananas"
assert_match %r{bigint "apple_id", null: false}, schema
assert_match %r{bigint "banana_id", null: false}, schema
end
if current_adapter?(:Mysql2Adapter)
def test_legacy_bigint_primary_key_should_be_auto_incremented
@migration = Class.new(ActiveRecord::Migration[5.0]) {