Ruby on rails 在设备中更改用户密码

Ruby on rails 在设备中更改用户密码,ruby-on-rails,devise,Ruby On Rails,Devise,我正在尝试更改用户密码,它成功地更改了密码,但之后它不允许我做任何事情,因为用户变得未经授权。。。我可能错过了一个重新验证它们的片段 这是我更新密码的代码 def password if current_user.valid_password?(params[:current_password]) current_user.password = params[:new_password] if current_user.save #sign

我正在尝试更改用户密码,它成功地更改了密码,但之后它不允许我做任何事情,因为用户变得未经授权。。。我可能错过了一个重新验证它们的片段

这是我更新密码的代码

def password

    if current_user.valid_password?(params[:current_password])

      current_user.password = params[:new_password]

      if current_user.save
        #sign them in

         #tried doing this to sign them in again but didn't work
          sign_in(:user, current_user)
          response.headers['X-CSRF-Token'] = form_authenticity_token
          response.headers['X-Pyne-Auth'] = current_user.authentication_token

          render :json => {:success => true} and return
        else
          render :json => {:success => false, error: "Unexpected error while trying to save user. Please try again."} and return
      end

    else
      render :json => {:success => false, error: "Your current password is incorrect. Please try again"} and return
    end

  end
我可以更新密码,但无法再次访问应用程序,因为用户未经授权


谢谢你

按照建议尝试
绕过登录(@user)

我将完全按照wiki中的内容进行操作,如果
@user.update(user\u params)
,则不会进入此处。。。只是进入else@BrianSounds,比如
更新
失败了。您的控制台上是否有任何提示阻止更新的内容?或者,您可以查看else子句中的
@user.errors.full_messages
,看看发生了什么。Brian,我在我的用户控制器中这样做,我刚刚注意到我的路由
design_for:users,:controllers=>{:sessions=>“api/v1/sessions”,密码:“api/v1/passwords”},:path_prefix=>'api/v1'
这是否意味着我应该将它放在其中一个控制器或其他什么东西中?如果没有看到您的视图,很难说,但我怀疑用户控制器是正确的位置,因为您没有指定注册控制器。我没有视图。我正在从IOS应用程序调用这些端点。Brian,Desive会自动生成端点来编辑用户密码吗?我做了rake路由,看到了这个
new\u user\u password GET/api/v1/users/password/new(:format)api/v1/passwords\new edit\u user\u password GET/api/v1/users/password/edit(:format)api/v1/passwords\edit