Ruby on rails 查询在控制台中工作,而在应用程序中不工作
我有以下代码:Ruby on rails 查询在控制台中工作,而在应用程序中不工作,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有以下代码: user = User.find_by(authentication_token: params[:authentication_token]) user.update(ip: nil) 当我在rails控制台上尝试这些行时,它就像一个符咒。 当我在我的应用程序上尝试它时,它根本不起作用 它将释放以下错误: nil:NilClass的未定义方法“update” 有什么帮助吗?通过一些搜索和调试,我发现“+”没有出现在控制器中的身份验证令牌中,它被一个空格替换,因此我在stack
user = User.find_by(authentication_token: params[:authentication_token])
user.update(ip: nil)
当我在rails控制台上尝试这些行时,它就像一个符咒。
当我在我的应用程序上尝试它时,它根本不起作用
它将释放以下错误:
nil:NilClass的未定义方法“update”
有什么帮助吗?通过一些搜索和调试,我发现“+”没有出现在控制器中的身份验证令牌中,它被一个空格替换,因此我在stackoverflow上找到了一个解决方案,即在生成随机令牌后用“%2B”替换+符号
它成功了。参数的输出是什么?@Pavan Parameters:{“authentication_token”=>“RrJqL7z7qVWbEvw5leYOyU 1fillnyj5qtmkewoyxhpijpgzyjotm4w/ggfjl4mldv/elztVM534N56zvObQ=”}尝试
params[“authentication_token”
而不是params[:authentication_token]
还是相同的错误上下文是什么?上述代码是否在控制器中?如果user
被证明是nil
,那么基本上有两种可能性:1)具有authentication\u令牌的用户不在数据库中(应用程序可能正在与控制台不同的环境中运行),或2)参数未正确传递给控制器。根据@JakeWorth的评论,您应该添加byebug
或binding.pry
到您的控制器(取决于您拥有的gem),并从运行的控制器中检查参数。或者,您可以只查看服务器控制台中的参数。