60

创建迁移文件后,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

4 回答 4

70

导轨 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在保存对迁移的更改后运行,将产生预期的结果。

于 2017-04-28T21:40:38.397 回答
47

没错!你也可以选择:

  def self.down
      remove_column :users, :client_id
  end
于 2011-04-13T12:43:44.157 回答
27

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

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

它将为您处理向上和向下,以及创建外键索引。你也可以remove_reference用来做相反的事情。

于 2013-10-01T16:43:49.147 回答
2

使用 Rails 4,您只需键入:

$ rails 生成迁移 AddClientRefToUser 客户端:参考

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

于 2013-10-24T02:48:14.707 回答