设计:在注册时不是创建新用户,而是将现有的访客用户转换为已注册的用户?

时间:2014-03-11 22:21:07

标签: ruby-on-rails devise user-registration

当访客访问我的网站时,他会自动以User.create guest: true身份登录。通过这种方式,他可以轻松地编写评论等,而不必在一开始就决定注册。

如果他喜欢,他应该可以稍后注册。这是我的问题:我不想注册成为新用户,而是希望将现有的访客用户转换为注册用户。

有没有一种简单的方法可以告诉设计使用现有用户?另一种方法是将所有创建的注释等移动到新创建的用户,但这看起来有点单调乏味。或者我可以删除访客用户并将新创建的用户ID更改为已删除的用户ID。在这两种情况下,我都必须非常小心dependent: :destroy关系,所以这似乎是一个不好的解决方案。

非常感谢有关如何转换现有用户的任何想法。

1 个答案:

答案 0 :(得分:-1)

假设this is what you mean by guest user那么这只是一个普通用户,错过了几个字段并且没有运行任何验证。

仅从现有访客用户创建用户时:

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

def update  
  user = User.find(params[:id])
  user.update_attributes(params[:user])
end

修改。 你真的只是处理CRUDy用户更新操作。将Sign Up锚标记指向特定guest_user ala的编辑页面:<%=link_to "Sign Up", edit_user_path(guest_user)%>

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

我认为你在欺骗自己,以为你正在处理一个超级特殊情况。访客用户只是一个用户遗漏了一些信息。注册只是意味着将该信息添加到现有的用户实例中。