Как определить внешний ключ, ограничения индекса в моем скрипте миграции - PullRequest
0 голосов
/ 23 сентября 2011

Как мне определить внешний ключ, ограничения индекса в моем сценарии переноса БД для моего приложения Rails в среде 2.3.x?

1 Ответ

1 голос
/ 23 сентября 2011

ActiveRecord не поддерживает добавление внешних ключей независимым от базы данных способом, поэтому вам придется делать это с кодом, специфичным для БД.Вот пример для MySQL:

class AddForeignKeyToUsers < ActiveRecord::Migration
  def self.up
    execute 'alter table users add constraint user_role foreign key user_role_idx (role_id) references roles (id) on delete set null on update cascade'
  end

  def self.down
    execute 'alter table users drop foreign key user_role'    
  end
end

Для индексов вы можете использовать add_index - например, так:

add_index(:users, :name)

Редактировать: Обновленный ответ, чтобы уточнить, чтоиндексы и внешние ключи обрабатываются по-разному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...