Ruby on rails Rails作为API-使用Desive删除当前用户
我有一个小问题,我只使用Rails 5.0.1作为API,并设计用于管理用户。但我无法找到允许用户删除自己的方法,这是我的控制器方法: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
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>代码> <代码>删除< /代码>。