54

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

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

4

6 に答える 6

27

remove_indexいいえ、残念ながら、このメソッドを使用して、移行内から手動でインデックスを削除する必要があります。

于 2011-08-26T12:22:58.750 に答える
6

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

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

または名前で、私の観点からはより悪いオプション

remove_index :actions, :name => "index_actions_on_user_id_and_action_name"
于 2012-10-02T10:54:31.423 に答える
5

Rails 4 では、列削除するとインデックスが削除されますが、列の種類を指定する必要があります。列の型がない場合、runningrake db:rollbackは戻ります

rake aborted!
StandardError: An error has occurred, all later migrations canceled:

remove_column is only reversible if given a type.

インデックスが作成された外部キー列を削除して実験していました。変更ブロックで指定index: trueしても、ロールバック時に列が元に戻せないように見えました。

于 2015-04-23T15:57:25.710 に答える
1

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

remove_column is only reversible if given a type.
于 2016-08-30T11:09:52.760 に答える
0

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

于 2016-06-28T17:30:50.970 に答える