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

Index option added for change_table migrations

In case if we want to add a column into the existing table
with index on it, we have to add column and index in two
seperate lines.
With this feature we don't need to write an extra line to
add index for column. We can just use `index` option.

Old behaviour in action:
```
  change_table(:languages) do |t|
    t.string :country_code
    t.index: :country_code
  end
```

New behaviour in action:
```
  change_table(:languages) do |t|
    t.string :country_code, index: true
  end
```

Exactly same behaviour is already exist for `create_table` migrations.
This commit is contained in:
Mehmet Emin INAC 2018-09-22 16:47:57 +02:00
parent d3b952184d
commit 5e4c22dfbb
No known key found for this signature in database
GPG key ID: BFD6462A1DDCC607
3 changed files with 22 additions and 0 deletions

View file

@ -1,3 +1,15 @@
* Added `index` option for `change_table` migration helpers.
With this change you can create indexes while adding new
columns into the existing tables.
Example:
change_table(:languages) do |t|
t.string :country_code, index: true
end
*Mehmet Emin İNAÇ*
* Don't update counter cache unless the record is actually saved.
Fixes #31493, #33113, #33117.

View file

@ -527,7 +527,9 @@ module ActiveRecord
#
# See TableDefinition#column for details of the options you can use.
def column(column_name, type, options = {})
index_options = options.delete(:index)
@base.add_column(name, column_name, type, options)
index(column_name, index_options.is_a?(Hash) ? index_options : {}) if index_options
end
# Checks to see if a column exists.

View file

@ -164,6 +164,14 @@ module ActiveRecord
end
end
def test_column_creates_column_with_index
with_change_table do |t|
@connection.expect :add_column, nil, [:delete_me, :bar, :integer, {}]
@connection.expect :add_index, nil, [:delete_me, :bar, {}]
t.column :bar, :integer, index: true
end
end
def test_index_creates_index
with_change_table do |t|
@connection.expect :add_index, nil, [:delete_me, :bar, {}]