Migrations add_index


#1

Hi all,

If I have the following migration:

class CreateDocuments < ActiveRecord::Migration
def self.up
create_table :documents do |t|
t.column :created_at, :datetime
t.column :identifier, :string
t.column :file_format, :string
end

add_index :documents, :identifier, :unique => true

end

def self.down
remove_index :documents, :identifier
drop_table :documents
end
end

Is it necessary (or recommended) to include the remove_index line in
the self.down method? I realize that dropping a table in MySQL will
automatically drop any indices on the table. However, I’m not sure if
this is the case for all databases. So would it be considered “good
style” to include the remove_index even though it’s normally a bit
redundant?


#2

it is good style to remove foreign indexes as apposed to local indexes.
All modern DB’s will drop the index pertaining to a column in this
table. The problem arises when an index in table “cats” is the foreign
key pointing to the id of table “dogs”

the index in “cats” must be removed to drop the “dogs” table.