Если вы хотите добавить свой индекс без потери данных, вы должны создать новую миграцию для добавления индекса. Предполагая, что ваша модель называется Widget , а внешняя модель называется Zidget ;
rails generate migration AddIndexToWidgets
и внутри вашего нового файла миграции на db/migrate/xxxxxxxxxx_add_index_to_widgets
class AddIndexToWidgets < ActiveRecord::Migration
def self.up
change_table :widgets do |t|
t.index :zidget_id # add ':unique => true' option if necessary
end
end
def self.down
change_table :widgets do |t|
t.remove_index :zidget_id
end
end
end
, а затем rake db:migrate
как обычно и вуаля, у вас есть индексированный столбец.
Обновление : Если все, что вы делаете, - это добавление индекса, есть более краткий способ написать то же самое. Там нет никакой разницы в отношении результатов. Просто прежний синтаксис предназначен для СУШКИ вашего кода, если у вас есть более одного изменения для вашей таблицы.
class AddIndexToWidgets < ActiveRecord::Migration
def self.up
add_index :widgets, :zidget_id # add ':unique => true' option if necessary
end
def self.down
remove_index :widgets, :column => :zidget_id
end
end