Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:强制新记录的特定id(或更改现有记录的id)_Ruby On Rails_Ruby On Rails 4_Clearance - Fatal编程技术网

Ruby on rails Rails:强制新记录的特定id(或更改现有记录的id)

Ruby on rails Rails:强制新记录的特定id(或更改现有记录的id),ruby-on-rails,ruby-on-rails-4,clearance,Ruby On Rails,Ruby On Rails 4,Clearance,由于在Rails应用程序中删除了一个用户的错误,我正在尝试将另一个用户记录强制添加到旧记录ID中 $ rails console > User.find(2) ActiveRecord::RecordNotFound: Couldn't find User with 'id'=2 > replacer = User.find(5) => #<User id: 5, created_at: [omitted for brevity ...] > replacer.id

由于在Rails应用程序中删除了一个用户的错误,我正在尝试将另一个用户记录强制添加到旧记录ID中

$ rails console
> User.find(2)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=2
> replacer = User.find(5)
=> #<User id: 5, created_at: [omitted for brevity ...] >
replacer.id = 2
=> 2
replacer.save
=> true
> User.find(2)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=2
> User.find(5)
ActiveRecord::RecordNotFound: Couldn't find User with 'id'=5
> replacer
=> #<User id: 2, created_at: [omitted for brevity ...] >
> replacer.valid?
=> true
$rails控制台
>User.find(2)
ActiveRecord::RecordNotFound:找不到id为2的用户
>replacer=User.find(5)
=> #
replacer.id=2
=> 2
替代品
=>正确
>User.find(2)
ActiveRecord::RecordNotFound:找不到id为2的用户
>User.find(5)
ActiveRecord::RecordNotFound:找不到“id”=5的用户
>替代者
=> #
>替代品有效吗?
=>正确

这是怎么回事

update语句是使用内存中对象的id构造的,该id已设置为2。无法更新不存在的记录

如果你想留在active record land,我想你可以这样做:
User.update(5,id:2)


如果做不到这一点,您肯定可以在SQL中完成
UPDATE users SET id=2,其中id=5

您不能从AR执行此操作,请在数据库中执行此操作。我以前使用AR执行过类似操作。不确定如何在数据库中执行此操作…奇怪的是,记录似乎已保存,但在id:5或id:2处找不到。这就像它在地狱里消失了…当你做
replacer.save时会发生什么?对于关系,是否也可以跨表执行此操作?例如,您在数据库中输入了两次同一家公司,这两个公司都有关系,您需要一个公司的所有关系来引用另一个公司,以便合并它们。