Ruby on rails 设计:不是在注册时创建新用户,而是将现有的来宾用户转换为注册用户?

Ruby on rails 设计:不是在注册时创建新用户,而是将现有的来宾用户转换为注册用户?,ruby-on-rails,devise,user-registration,Ruby On Rails,Devise,User Registration,当客人来到我的网站时,他会自动以用户身份登录。create guest:true。这样他就可以轻松地写评论等,而不必一开始就决定注册 如果他愿意的话,他应该可以稍后注册。我的问题是:我想将现有的来宾用户转换为注册用户,而不是作为新用户注册 有没有简单的方法告诉Desive使用现有用户?另一种方法是将所有创建的注释等移动到新创建的用户,但这似乎有点乏味。或者我可以删除来宾用户并将新创建的用户ID更改为已删除的用户ID。在这两种情况下,我必须非常小心地处理依赖关系,所以这似乎是一个相当糟糕的解决方案

当客人来到我的网站时,他会自动以用户身份登录。create guest:true。这样他就可以轻松地写评论等,而不必一开始就决定注册

如果他愿意的话,他应该可以稍后注册。我的问题是:我想将现有的来宾用户转换为注册用户,而不是作为新用户注册

有没有简单的方法告诉Desive使用现有用户?另一种方法是将所有创建的注释等移动到新创建的用户,但这似乎有点乏味。或者我可以删除来宾用户并将新创建的用户ID更改为已删除的用户ID。在这两种情况下,我必须非常小心地处理依赖关系,所以这似乎是一个相当糟糕的解决方案

任何关于如何转换现有用户的想法都将受到高度赞赏。

假设这只是一个普通用户缺少几个字段,并且没有在其上运行验证

从现有来宾用户创建用户时,只需:

def edit 
  @user = User.find(params[:id])
end

def update  
  user = User.find(params[:id])
  user.update_attributes(params[:user])
end
编辑。 您实际上只是在处理一个粗糙的用户更新操作。让您的注册锚标签直接指向特定来宾用户的编辑页面:

我已经更新了代码示例。假设您使用的是脚手架设置,这些方法应该在users\u controller中。您需要进行一些检查,以确保处理丢失的参数或错误

我认为你是在欺骗自己,让自己以为你在处理一个超级特例。来宾用户只是缺少一些信息的用户。注册只意味着将该信息添加到现有用户实例中。

假设这只是一个普通用户缺少几个字段,并且没有在其上运行验证

从现有来宾用户创建用户时,只需:

def edit 
  @user = User.find(params[:id])
end

def update  
  user = User.find(params[:id])
  user.update_attributes(params[:user])
end
编辑。 您实际上只是在处理一个粗糙的用户更新操作。让您的注册锚标签直接指向特定来宾用户的编辑页面:

我已经更新了代码示例。假设您使用的是脚手架设置,这些方法应该在users\u controller中。您需要进行一些检查,以确保处理丢失的参数或错误


我认为你是在欺骗自己,让自己以为你在处理一个超级特例。来宾用户只是缺少一些信息的用户。注册只意味着将该信息添加到现有用户实例。

感谢您的澄清。是的,我使用plataformatec的链接代码,但我应该在哪里连接到注册过程并更改属性?我想我必须澄清一下:我不想更改通常的注册机制、表单等,只想在提交注册表单时将现有的来宾用户转换为注册用户。我在这里重新提出了我的问题:谢谢你澄清这一点。是的,我使用plataformatec的链接代码,但我应该在哪里连接到注册过程并更改属性?我想我必须澄清一下:我不想更改通常的注册机制、表单等,只想在提交注册表单时将现有的来宾用户转换为注册用户。我在这里重新提出了我的问题: