字符串上的Rails TypeError(没有将Symbol隐式转换为Integer)

时间:2018-09-06 11:07:18

标签: ruby-on-rails ruby

设置简单的令牌检查后,会在会话栏上弹出

  

TypeError(不会将Symbol隐式转换为Integer)

     

app / controllers / sessions_controller.rb:21:in'verify_token'

关于此方法

所以,正如我检查的那样。

有人知道为什么这种方法会发生这种情况吗?

def verify_token
    @current_user = User.find_by(auth_token: request.headers['token'] [:auth_token])    
    if @current_user    
      render json: {message:"verified",  status: 200}    
    else    
      render_unauthorized("Token failed verification")
    end
end

1 个答案:

答案 0 :(得分:1)

问题是`request.headers ['token']可能包含字符串。

这样做的时候

request.headers['token'] [:auth_token]

您正在字符串上运行[]方法,如果该方法包含整数,则允许该方法。

'carrot'[2]
=> 'r'

但是如果您改用符号则不允许这样做,因为它不能自动将符号转换为整数(无隐式转换)

可能就足够了...

@current_user = User.find_by(auth_token: request.headers['token'])