Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查询在控制台中工作,而在应用程序中不工作_Ruby On Rails_Activerecord - Fatal编程技术网

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),并从运行的控制器中检查参数。或者,您可以只查看服务器控制台中的参数。