Rails迁移添加和删除引用

时间:2011-04-13 12:12:13

标签: ruby ruby-on-rails-3 rails-migrations

使用rails generate migration AddClientToUser创建迁移文件后,我可以编辑我的迁移文件:

class AddClientToUser < ActiveRecord::Migration
  def self.up
    change_table :users do |t|
      t.references :client
    end
  end

  def self.down
    change_table :users do |t|
      t.remove :client_id
    end
  end
end

这是反转迁移中添加的参考列的正确方法吗?

4 个答案:

答案 0 :(得分:35)

这是对的!你也可以选择:

  def self.down
      remove_column :users, :client_id
  end

答案 1 :(得分:24)

Rails 4.2.1

rails g migration RemoveClientFromUsers client:references

将生成类似的迁移:

class RemoveClientFromUser < ActiveRecord::Migration
  def change
    remove_reference :users, :client, index: true, foreign_key: true
  end
end

此外,可以通过添加以下内容来添加另一个或其他引用:

add_reference :users, :model_name, index: true, foreign_key: true
非常change方法中的

。 最后在保存对迁移的更改后运行rake db:migrate将产生所需的结果。

答案 2 :(得分:23)

在rails 4之后,您可以执行以下操作

class AddClientToUser < ActiveRecord::Migration
  def change
    add_reference :users, :client, index: true
  end
end

它将为您处理向上和向下,以及创建外键索引。您也可以使用remove_reference执行相反的操作。

答案 3 :(得分:2)

使用Rails 4,您只需键入:

  

$ rails生成迁移AddClientRefToUser客户端:引用

在控制台中,这将与Ryan所说的相同。