Skip to content

Commit

Permalink
Merge pull request #30655 from kuzukuzu/fix_create_join_table_compati…
Browse files Browse the repository at this point in the history
…bility

make create_join_table compatible.
  • Loading branch information
kamipo committed Sep 20, 2017
2 parents ee033fd + 0c8bed9 commit 9181151
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
15 changes: 15 additions & 0 deletions activerecord/lib/active_record/migration/compatibility.rb
Expand Up @@ -71,6 +71,21 @@ class << t
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
Expand Down
30 changes: 30 additions & 0 deletions activerecord/test/cases/migration/compatibility_test.rb
Expand Up @@ -199,6 +199,36 @@ def change
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]) {
Expand Down

0 comments on commit 9181151

Please sign in to comment.