2011-09-23 44 views

回答

1

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) 

編輯:更新答案澄清,索引和外鍵的不同處理方式。

+0

有沒有辦法在數據庫不可知的情況下做到這一點,並在不久的將來向Rails3遷移。 – Jason

+0

不是我所知道的,但我對Rails 3的使用經驗目前相當有限。我更新了答案,因爲它誤導了外鍵和索引的處理方式。 – StefanOS

+0

我正在尋找一個符合Rails 2.3.x的解決方案。 – Jason

相關問題