{:store => false}的未定义方法`to_key':使用`sign_in` helper时的哈希

时间:2016-01-14 10:22:03

标签: ruby-on-rails ruby-on-rails-4 rspec devise

我在我的控制器规范中定义了这个代码块:

describe "DELETE #destroy" do

  before(:each) do
    @user = FactoryGirl.create :user
    sign_in @user, store: false
    delete :destroy, id: @user.auth_token
  end

  it { should respond_with 204 }

end

当我运行测试时,收到错误undefined method 'to_key' for {:store=>false}:Hash

这是相关的控制器方法:

def destroy
  user = User.find_by(auth_token: params[:id])
  user.generate_authentication_token!
  user.save
  head 204
end

由于错误,测试失败。

1 个答案:

答案 0 :(得分:1)

在测试中,您使用的不是控制器中的助手。您使用的是TestHelpers,此处引自documentation

  

通过将其密钥存储在会话中来签名给定资源。   此方法绕过任何warden身份验证回调。

     

示例:

     

sign_in:user,@ user#sign_in(范围,资源)
     sign_in @user#sign_in(资源)

因此,您无法将哈希值传递给此帮助程序。