我遇到一个小问题,我只使用Rails 5.0.1作为API,并使用Devise来管理用户。但是我找不到让用户能够删除自己的方法,这是我的控制器方法:
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给出了以下信息:
RuntimeError:无法修改冻结哈希
所以我改变了方法来找到id为current_user的用户,如下所示:
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
但是用户确实存在,我也尝试在删除之前注销用户但也没有用。那么有谁知道如何允许用户删除自己?
我见过一些解决方案,但是使用了视图并使用了Link_to,但我不使用视图,因为它是一个API。