rails,用户在编辑个人资料后退出?

我想知道为什么用户在编辑他们的个人资料后会继续退出? 我的更新function是

def update flash[:notice] = "what is params[id]", params[:id] @user = User.find(params[:id]) if @user.update_attributes(params[:user]) #flash[:success] = "Profile updated" sign_in @user redirect_to @user else render 'edit' end end 

params id正确传递,并且我的数据库上的所有内容都正确更新。 我在users/edit.html.erb

  

Update your profile

{:multipart => true} do |f| %> "btn btn-large btn-primary", :style =>"display:block;" %> "image_avatar") if @user.image? %> "upload_button" %>

我正在使用devise gem ,但这个编辑没有使用设计路线(我正在使用设计注册)。 这会影响它吗?

是的,设计有一个sign_in方法。

但是,您的用户在编辑其个人资料后不应退出。

我遇到了这个奇怪的问题,在我的情况下,这是由于在保存用户时重新生成了密码。 发生这种情况,尽管配置文件表单中没有密码字段。 重置是通过ActiveRecord回调进行的,该回调为用户分配了facebook身份validation随机密码。 我通过确保我从不为已经设置了encrypted_pa​​ssword的用户分配随机密码来修复它。

设计通过warden gem在会话中存储用户,存储的内容类似于[[user_id],encrypted_pa​​ssword](在session [‘warden.user.user.key’]中)。 当密码被更改时,警告用户在会话中查找将失败 – 因为加密的密码不再匹配 – 因此用户将被注销。