当访客访问我的网站时,他会自动以User.create guest: true
身份登录。通过这种方式,他可以轻松地编写评论等,而不必在一开始就决定注册。
如果他喜欢,他应该可以稍后注册。这是我的问题:我不想注册成为新用户,而是希望将现有的访客用户转换为注册用户。
有没有一种简单的方法可以告诉设计使用现有用户?另一种方法是将所有创建的注释等移动到新创建的用户,但这看起来有点单调乏味。或者我可以删除访客用户并将新创建的用户ID更改为已删除的用户ID。在这两种情况下,我都必须非常小心dependent: :destroy
关系,所以这似乎是一个不好的解决方案。
非常感谢有关如何转换现有用户的任何想法。
答案 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
中。您需要进行一些检查以确保处理丢失的参数或错误。
我认为你在欺骗自己,以为你正在处理一个超级特殊情况。访客用户只是一个用户遗漏了一些信息。注册只是意味着将该信息添加到现有的用户实例中。