I have the following migration
class LinkDoctorsAndSpecializations < ActiveRecord::Migration
def up
add_reference :doctors, :doctor_specialization, polymorphic: true, index: true
end
def down
remove_reference :doctors, :doctor_specialization, polymorphic: true
end
end
when i run rake db:migrate
i am getting the error
Index name 'index_doctors_on_doctor_specialization_type_and_doctor_specialization_id' on table 'doctors' is too long; the limit is 63 characters
so how can i specify the index name when using add_reference like the way we specify in add_index :table, :column, :name => 'index name'
As I commented, do :
add_index :table, :column, name: 'index name'
Here is documentation.
Or, you can try this :
class LinkDoctorsAndSpecializations < ActiveRecord::Migration
def change
add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index name' }
end
end
This would actually work:
add_index :table, :column, name: 'index name'
Take a look for more examples.
I would not suggest leaving out "add_reference", but you could leave out the "index" option hash key and then use "add_index":
add_reference :table, :column
add_index :table, :column, :name => 'index_table_column'
Or, the more appropriate way would be like this:
add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index_doctors_doctor_specialization' }
I've heard the best way to fix this is to just leave it out of the add reference line and specify it manually below much like in the last line of your question
add_index :table, :column, :name => 'index name'