Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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/6/multithreading/4.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:dependent::destroy即使在重新分配后也会删除记录_Ruby On Rails_Ruby_Devise_Belongs To_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails:dependent::destroy即使在重新分配后也会删除记录

Ruby on rails Rails:dependent::destroy即使在重新分配后也会删除记录,ruby-on-rails,ruby,devise,belongs-to,ruby-on-rails-5,Ruby On Rails,Ruby,Devise,Belongs To,Ruby On Rails 5,我有一个Rails 5应用程序,用户可以注册为guestUsers来试用我的服务。每个用户(和来宾用户)可以有许多应用程序s。关系如下所示: # User.rb has_many :apps, dependent: :destroy # App.rb belongs_to :user 当来宾用户决定注册该服务时,我希望: (1) 将来宾用户的应用程序重新分配给新的当前用户 (2) 删除旧来宾用户(不删除应用程序) 我遇到的问题是,即使在删除旧的来宾用户之前,我将app.user重新分配给

我有一个Rails 5应用程序,用户可以注册为guest
User
s来试用我的服务。每个
用户
(和来宾用户)可以有许多
应用程序
s。关系如下所示:

# User.rb
has_many :apps, dependent: :destroy

# App.rb
belongs_to :user
当来宾用户决定注册该服务时,我希望:

  • (1) 将来宾用户的应用程序重新分配给新的当前用户
  • (2) 删除旧来宾用户(不删除应用程序)
我遇到的问题是,即使在删除旧的来宾用户之前,我将
app.user
重新分配给我的新
当前用户(我使用设备gem),应用程序也会被删除

在我的
类用户::注册控制器
中,我覆盖了如下
创建
操作(相关部分):

你知道为什么会发生这种事,或者我做错了什么吗

更新

这是我的
user_params
变量在提交后的样子:

<ActionController::Parameters {"name"=>"Test user", "email"=>"test@example.com", "password"=>"testing"} permitted: false>

我会考虑在把这些应用程序分配给新用户之前复制这些应用程序。这样,就不会混淆它是否是同一个应用程序

guest.apps.each do |app|
  current_user.apps << app.dup
end

您确定
guest\u user
current\u user
不一样吗?使用save时,能否向我们显示
注册参数
参数[:user]
!这可以消除错误。尝试删除感叹号。在代码中放置断点也很有帮助。一旦你学会了这一点,调试就永远不会像以前一样了。@Aleksey是的,它们是不同的。@SergiiK我已经把它添加到了我原来的问题中。
{"email"=>"test@example.com", "password"=>"testing", "name"=>"Test"}
guest.apps.each do |app|
  current_user.apps << app.dup
end
current_user.apps = guest.apps.map(&:dup)
current_user.save