mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #26019 from agrobbin/schema-load-unique-column-indices
Support multiple indexes on the same column when loading the schema
This commit is contained in:
commit
3e9070e645
3 changed files with 19 additions and 3 deletions
|
@ -211,7 +211,7 @@ module ActiveRecord
|
|||
|
||||
def initialize(name, temporary = false, options = nil, as = nil, comment: nil)
|
||||
@columns_hash = {}
|
||||
@indexes = {}
|
||||
@indexes = []
|
||||
@foreign_keys = []
|
||||
@primary_keys = nil
|
||||
@temporary = temporary
|
||||
|
@ -327,7 +327,7 @@ module ActiveRecord
|
|||
#
|
||||
# index(:account_id, name: 'index_projects_on_account_id')
|
||||
def index(column_name, options = {})
|
||||
indexes[column_name] = options
|
||||
indexes << [column_name, options]
|
||||
end
|
||||
|
||||
def foreign_key(table_name, options = {}) # :nodoc:
|
||||
|
|
|
@ -278,7 +278,7 @@ module ActiveRecord
|
|||
result = execute schema_creation.accept td
|
||||
|
||||
unless supports_indexes_in_create?
|
||||
td.indexes.each_pair do |column_name, index_options|
|
||||
td.indexes.each do |column_name, index_options|
|
||||
add_index(table_name, column_name, index_options)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,6 +17,7 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|||
@connection.drop_table :nep_fruits rescue nil
|
||||
@connection.drop_table :nep_schema_migrations rescue nil
|
||||
@connection.drop_table :has_timestamps rescue nil
|
||||
@connection.drop_table :multiple_indexes rescue nil
|
||||
ActiveRecord::SchemaMigration.delete_all rescue nil
|
||||
ActiveRecord::Migration.verbose = @original_verbose
|
||||
end
|
||||
|
@ -93,6 +94,21 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|||
assert_equal "20131219224947", ActiveRecord::SchemaMigration.normalize_migration_number("20131219224947")
|
||||
end
|
||||
|
||||
def test_schema_load_with_multiple_indexes_for_column_of_different_names
|
||||
ActiveRecord::Schema.define do
|
||||
create_table :multiple_indexes do |t|
|
||||
t.string "foo"
|
||||
t.index ["foo"], name: "multiple_indexes_foo_1"
|
||||
t.index ["foo"], name: "multiple_indexes_foo_2"
|
||||
end
|
||||
end
|
||||
|
||||
indexes = @connection.indexes("multiple_indexes")
|
||||
|
||||
assert_equal 2, indexes.length
|
||||
assert_equal ["multiple_indexes_foo_1", "multiple_indexes_foo_2"], indexes.collect(&:name).sort
|
||||
end
|
||||
|
||||
def test_timestamps_without_null_set_null_to_false_on_create_table
|
||||
ActiveRecord::Schema.define do
|
||||
create_table :has_timestamps do |t|
|
||||
|
|
Loading…
Reference in a new issue