Подтвердить что ты не робот

Можно ли изменить индекс столбца в миграции рельсов 3?

У меня есть "пользователи" таблицы с "электронной почтой" столбца. Раньше он был уникальным (с индексом), но новое требование - разрешить там nils.

Есть ли лучшее решение, чем:

  remove_index :users, :email
  add_index :users, :email

?

Первоначально он был добавлен с уникальной опцией:

add_index :users, :email, :unique => true
4b9b3361

Ответ 1

Я бы сказал, что у вас есть правильное решение, так как индекс нужно будет восстановить, поэтому нет update_index.

Ответ 2

Эй, это миграция, которую я только что написал, что работает очень хорошо. У меня есть таблица scraped_episodes с столбцом, который является varchar (255) 'enclosureUrl'. Мне нужно сделать это дольше длинными URL-адресами, так что это то, что я использовал (Rails 3.2.13)

class ExpandEnclosureUrl < ActiveRecord::Migration
  def up
    # remove index cuz we need to
    remove_index :scraped_episodes, :enclosureUrl

    # change length to 2048 characters
    change_column :scraped_episodes, :enclosureUrl, :text, :limit=>2048

    # redo this index to only index the first 255 chars
    add_index :scraped_episodes, :enclosureUrl, :length => 255
  end

  def down
    # remove index cuz we need to
    remove_index :scraped_episodes, :enclosureUrl

    # use the same settings at when i first created this field
    change_column :scraped_episodes, :enclosureUrl, :string, :limit=>nil

    # use the same settings as when i first added this index
    add_index :scraped_episodes, :enclosureUrl
  end


end