「メール」列のある「ユーザー」テーブルがあります。以前は(インデックス付きで)一意でしたが、新しい要件はそこにnilを許可することです。
より良い解決策はありますか:
remove_index :users, :email
add_index :users, :email
?
最初は、一意のオプションで追加されました。
add_index :users, :email, :unique => true
インデックスを再生成する必要があるので、そこに正しい解決策があると思います。したがって、なぜ_update_index
_がありません。
ちょっとここに書いた移行はかなりうまくいきます。 varchar(255) 'enclosureUrl'の列を持つテーブル 'scraped_episodes'があります。これを長い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