Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails作为API-使用Desive删除当前用户_Ruby On Rails_Ruby_Devise - Fatal编程技术网

Ruby on rails Rails作为API-使用Desive删除当前用户

Ruby on rails Rails作为API-使用Desive删除当前用户,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我有一个小问题,我只使用Rails 5.0.1作为API,并设计用于管理用户。但我无法找到允许用户删除自己的方法,这是我的控制器方法: def delete_user begin User.find(current_user.id).destroy render(nothing: true, status: :ok) rescue => e render(json: {errors: e.message}, status: :unproc

我有一个小问题,我只使用Rails 5.0.1作为API,并设计用于管理用户。但我无法找到允许用户删除自己的方法,这是我的控制器方法:

def delete_user
    begin
      User.find(current_user.id).destroy
      render(nothing: true, status: :ok)
    rescue => e
      render(json: {errors: e.message}, status: :unprocessable_entity)
    end
  end
我的rspec给出以下信息:

运行时错误:无法修改冻结哈希

因此,我更改了按id查找当前用户的方法,如下所示:

def delete_user
 begin
   User.find(current_user.id).destroy
   render(nothing: true, status: :ok)
 rescue => e
   render(json: {errors: e.message}, status: :unprocessable_entity)
 end
end
rspec消息是:

ActiveRecord::RecordNotFound:找不到“id”=1614的用户

这是Rspec代码:

describe 'DELETE #delete_user' do
    login_user

    it 'expect to render 200 if delete' do
      delete :delete_user
      expect(response.body).to be_empty
      expect(response.status).to eq(200)
    end
  end
但该用户确实存在,我也尝试过在删除前注销该用户,但也不起作用。那么,有人知道如何允许用户删除自己吗


我见过一些解决方案,但使用了视图和链接,但我不使用视图,因为它是一个API。

除非您显示rspec代码,否则我们如何知道是什么导致了错误;)我发现这两种
delete\u user
方法是相同的。你能纠正一下吗?另一方面,假设<>代码> DeleTeEaseUs>代码>在<代码> UsersController < /代码>中,并且没有其他方法被称为“代码>删除< /代码>,您应该考虑重命名<代码> DeleTeEuthUs>代码> <代码>删除< /代码>。