ruby-on-rails - 如何在Rails中更改记录的主要ID?

标签 ruby-on-rails ruby-on-rails-3 activerecord

滑轨控制台
u = User.find(9)
u.id = 7#没有其他ID为7的记录
保存
=>是的
全部用户

ID尚未更改。

如何更改主要ID?为什么会阻止此操作?

在Rails 3.0.7和PostgreSQL中工作。

编辑:
由于有充分的理由不这样做,因此我将解释原因,并希望这是一个很好的理由。

我们正在对登台进行可用性测试,因此我希望它看起来像正式产品,以便每个人都可以轻松进行。我不想通过在暂存中按一个顺序在生产中按一个顺序排列某些事情,而在生产中按不同顺序排列某些东西来在可用性测试过程中造成困惑或错误。我仅在登台数据库上更改了一个PK ID。

不要在生产数据库上执行此操作!

最佳答案

我不确定为什么它阻止了该操作,但是确实可以阻止它。

您可以为用户使用update_all方法绕过此操作。

User.where(id: 7).update_all(id: 9)

尽管可能的话,您实际上应该避免这样做。

关于ruby-on-rails - 如何在Rails中更改记录的主要ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8301635/

相关文章:

ruby-on-rails - 将 'Please match the format requested.' 更改为其他内容?

ruby-on-rails - Heroku:在没有本地文件系统的情况下为大型动态生成的 Assets 提供服务

ruby-on-rails - 使用 koala gem rails 时出现法拉第 SSL 错误

ruby - 导轨 : assign multiple params via form_for check_box for HABTM relationship

ruby-on-rails - Rails 4 update_all 并从另一个字段设置值

ruby-on-rails - FactoryGirl has_many 与双向存在验证的关联创建额外记录

ruby-on-rails - 在 Apache 服务器上哪里存储 Rails 站点?

ruby-on-rails - 使用模板创建 Rails 项目的问题

ruby-on-rails - Rails 和类变量 : will this persist across users and server calls?

ruby-on-rails - 什么是等效于惰性求值范围的 Rails ActiveRecord find(x) 方法?如何重构 ActiveRecord 查找器?