通过添加和删除引用进行 Rails 迁移

发布于 2024-11-01 00:55:31 字数 340 浏览 1 评论 0原文

使用rails生成迁移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

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

After creating a migration file with rails generate migration AddClientToUser I can edit my migration file like so:

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

Is this the correct way to reverse the reference column added in the migration?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

李白 2024-11-08 00:55:31

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,将产生所需的结果。

Rails 4.2.1

rails g migration RemoveClientFromUsers client:references

Will generate a migration similar:

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

In addition, one is at liberty to add another or other reference(s) by adding:

add_reference :users, :model_name, index: true, foreign_key: true

within the very change method.
And finally running rake db:migrate after saving the changes to the migration, will produce the desired results.

无名指的心愿 2024-11-08 00:55:31

没错!你也可以选择:

  def self.down
      remove_column :users, :client_id
  end

that is right! and you could also go with:

  def self.down
      remove_column :users, :client_id
  end
油饼 2024-11-08 00:55:31

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

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

它将为您处理向上和向下,以及创建外键索引。您还可以使用 remove_reference< /a> 做相反的事情。

After rails 4 you can do the following

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

It will handle the up and the down for you, as well as creating a foreign key index. You can also use remove_reference to do the opposite.

风流物 2024-11-08 00:55:31

使用 Rails 4,您只需输入:

$rails 生成迁移 AddClientRefToUser client:references

,这将与 Ryan 所说的相同。

With Rails 4 you can just type:

$ rails generate migration AddClientRefToUser client:references

in the console and this will make the same that Ryan said.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文