Предположим, я создал таблицу table
в приложении Rails. Некоторое время спустя добавляю столбец, работающий:
rails generate migration AddUser_idColumnToTable user_id:string.
Затем я понимаю, что мне нужно добавить user_id
в качестве индекса. Я знаю о add_index
методе, но где его вызывать? Должен ли я выполнить миграцию (если да, какую?), А затем добавить вручную этот метод?
ruby-on-rails
indexing
migration
user1611830
источник
источник
:table
это фактическое имя таблицы, так и в случаеusers
таблицы, нужно заменить:users
на:table
.Если вам нужно создать,
user_id
тогда будет разумным предположить, что вы ссылаетесь на пользовательскую таблицу. В этом случае миграция должна быть:Эта команда сгенерирует следующую миграцию:
После запуска
rake db:migrate
одновременноuser_id
столбца и индекс будет добавлен кproducts
таблице.Если вам просто нужно добавить индекс к существующему столбцу, например,
name
кuser
таблице, может оказаться полезным следующий прием:rails generate migration AddIndexToUsers name:string:index
сгенерирует следующую миграцию:Удалите
add_column
строку и запустите миграцию.В описанном случае вы могли ввести
rails generate migration AddIndexIdToTable index_id:integer:index
команду, а затем удалитьadd_column
строку из сгенерированной миграции. Но я бы рекомендовал отменить первоначальную миграцию и вместо этого добавить ссылку:источник
Добавьте в сгенерированную миграцию после создания столбца следующее (пример)
источник
Для справок вы можете позвонить
Если в будущем вам понадобится добавить общий индекс, вы можете запустить этот
Сгенерировать код:
источник
Вы можете использовать это, просто подумайте, что Job - это имя модели, к которой вы добавляете индекс cader_id :
источник