web-dev-qa-db-ja.com

Rails移行のある列を削除すると、列に関連付けられたインデックスが削除されます

Rails 2の場合、Railsのある列を削除すると、列に関連付けられているインデックスも変更/削除されますか?そうでない場合は、代わりに変更する必要があります。 /各インデックスを手動で削除します。代わりに自動化すべきではありませんか?

ありがとう(Rails初心者から)

49
Dexygen

いいえ、残念ながら、移行中に remove_index メソッド。

25
John Topley

Rails 4以上)から、インデックスは列の削除とともに自動的に削除されます。

58
enter08

明確にするために、移行内の2列のインデックスを削除する構文は次のとおりです。

remove_index :actions, :column => [:user_id,:action_name]

または名前で言えば、私の観点からは悪いオプションです

remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
6
Maragues

注意として、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変更ブロックでは、ロールバック時に列を元に戻せるようには見えませんでした。

5
Jim

インデックスを削除するには、remove_indexを使用する必要があります。remove_columnを使用すると、インデックスは削除されますが、rake db:rollbackを実行できません。ジムが言ったように。

remove_column is only reversible if given a type.
0
William Hu

Rails> 3.2.16では、列を削除するとインデックスが削除されます。

0
Mark Swardstrom