如何在我的迁移脚本中定义外键,索引约束

时间:2011-09-23 09:02:47

标签: ruby-on-rails

如何在2.3.x环境中为我的Rails应用程序在我的数据库迁移脚本中定义外键,索引约束?

1 个答案:

答案 0 :(得分: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)

编辑:更新了答案,阐明索引和外键的处理方式不同。