Rails 2の場合、Railsのある列を削除すると、列に関連付けられているインデックスも変更/削除されますか?そうでない場合は、代わりに変更する必要があります。 /各インデックスを手動で削除します。代わりに自動化すべきではありませんか?
ありがとう(Rails初心者から)
いいえ、残念ながら、移行中に remove_index
メソッド。
Rails 4以上)から、インデックスは列の削除とともに自動的に削除されます。
明確にするために、移行内の2列のインデックスを削除する構文は次のとおりです。
remove_index :actions, :column => [:user_id,:action_name]
または名前で言えば、私の観点からは悪いオプションです
remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
注意として、Rails 4 will列を削除する場合はインデックスを削除しますが、列タイプを指定する必要があります。列タイプなしで、rake db:rollback
戻ります
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
remove_column is only reversible if given a type.
インデックス付けされた外部キー列を削除する実験をしていました。 index: true
変更ブロックでは、ロールバック時に列を元に戻せるようには見えませんでした。
インデックスを削除するには、remove_index
を使用する必要があります。remove_column
を使用すると、インデックスは削除されますが、rake db:rollbackを実行できません。ジムが言ったように。
remove_column is only reversible if given a type.
Rails> 3.2.16では、列を削除するとインデックスが削除されます。