Укажите имя пользовательского индекса при использовании add reference
у меня есть следующая миграция
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
когда я запускаю rake db:migrate
Я получаю ошибку
Index name 'index_doctors_on_doctor_specialization_type_and_doctor_specialization_id' on table 'doctors' is too long; the limit is 63 characters
Итак, как я могу указать имя индекса при использовании add_reference, как мы указываем в add_index :table, :column, :name => 'index name'
4 ответов
Как Я прокомментировал, do:
add_index :table, :column, name: 'index name'
здесь документация. Или, вы можете попробовать это :
class LinkDoctorsAndSpecializations < ActiveRecord::Migration
def change
add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index name' }
end
end
Это действительно работает:
add_index :table, :column, name: 'index name'
посмотреть для получения дополнительных примеров.
Я бы не предложил опустить "add_reference", но вы можете опустить хэш-ключ" index", а затем использовать "add_index":
add_reference :table, :column
add_index :table, :column, :name => 'index_table_column'
или, более подходящий способ будет следующим:
add_reference :doctors, :doctor_specialization, polymorphic: true, index: { name: 'index_doctors_doctor_specialization' }
Я слышал, что лучший способ исправить это - просто оставить его вне строки добавления ссылки и указать его вручную ниже, как в последней строке вашего вопроса
add_index :table, :column, :name => 'index name'