使用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
这是反转迁移中添加的参考列的正确方法吗?
答案 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所说的相同。