Ruby on rails Rails:dependent::destroy即使在重新分配后也会删除记录
我有一个Rails 5应用程序,用户可以注册为guestRuby 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重新分配给
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