0
如何在2.3.x
環境中爲我的Rails應用程序的數據庫遷移腳本定義外鍵索引約束?如何在我的遷移腳本中定義外鍵索引約束
如何在2.3.x
環境中爲我的Rails應用程序的數據庫遷移腳本定義外鍵索引約束?如何在我的遷移腳本中定義外鍵索引約束
ActiveRecord不支持以與數據庫無關的方式添加外鍵,因此您需要使用特定於DB的代碼執行此操作。這裏有一個例子爲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)
編輯:更新答案澄清,索引和外鍵的不同處理方式。
有沒有辦法在數據庫不可知的情況下做到這一點,並在不久的將來向Rails3遷移。 – Jason
不是我所知道的,但我對Rails 3的使用經驗目前相當有限。我更新了答案,因爲它誤導了外鍵和索引的處理方式。 – StefanOS
我正在尋找一個符合Rails 2.3.x的解決方案。 – Jason