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
|
||||||
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)
|
def add_reference(table_name, ref_name, **options)
|
||||||
super(table_name, ref_name, type: :integer, **options)
|
super(table_name, ref_name, type: :integer, **options)
|
||||||
end
|
end
|
||||||
|
|
|
@ -199,6 +199,36 @@ class LegacyPrimaryKeyTest < ActiveRecord::TestCase
|
||||||
assert_match %r{create_table "legacy_primary_keys", id: :integer, default: nil}, schema
|
assert_match %r{create_table "legacy_primary_keys", id: :integer, default: nil}, schema
|
||||||
end
|
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)
|
if current_adapter?(:Mysql2Adapter)
|
||||||
def test_legacy_bigint_primary_key_should_be_auto_incremented
|
def test_legacy_bigint_primary_key_should_be_auto_incremented
|
||||||
@migration = Class.new(ActiveRecord::Migration[5.0]) {
|
@migration = Class.new(ActiveRecord::Migration[5.0]) {
|
||||||
|
|
Loading…
Reference in a new issue