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:
commit
918115148d
2 changed files with 45 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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]) {
|
||||
|
|
Loading…
Reference in a new issue