Rails as API - 使用devise删除当前用户

时间:2017-06-23 15:56:14

标签: ruby-on-rails ruby devise

我遇到一个小问题,我只使用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。

0 个答案:

没有答案