Mat*_*lly 43 ruby rails-migrations ruby-on-rails-3
创建迁移文件后,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
Run Code Online (Sandbox Code Playgroud)
这是反转迁移中添加的参考列的正确方法吗?
Dan*_*iel 36
这是对的!你也可以选择:
def self.down
remove_column :users, :client_id
end
Run Code Online (Sandbox Code Playgroud)
Mul*_*One 31
Rails 4.2.1
rails g migration RemoveClientFromUsers client:references
Run Code Online (Sandbox Code Playgroud)
会产生类似的迁移:
class RemoveClientFromUser < ActiveRecord::Migration
def change
remove_reference :users, :client, index: true, foreign_key: true
end
end
Run Code Online (Sandbox Code Playgroud)
此外,通过添加以下内容,可以自由添加另一个或其他引用:
add_reference :users, :model_name, index: true, foreign_key: true
Run Code Online (Sandbox Code Playgroud)
在这个change方法中.最后rake db:migrate在保存对迁移的更改后运行,将产生所需的结果.
Rya*_*yan 23
在rails 4之后,您可以执行以下操作
class AddClientToUser < ActiveRecord::Migration
def change
add_reference :users, :client, index: true
end
end
Run Code Online (Sandbox Code Playgroud)
它将为您处理up和down,以及创建外键索引.您也可以使用remove_reference相反的方法.
| 归档时间: |
|
| 查看次数: |
38390 次 |
| 最近记录: |