试图弄清楚为什么在调用没有参数的方法或没有产生记录的参数 id 时我的 nil 检查失败。
@game = Game.where(:id => params[:id]).first
if @game.nil?
redirect_to root_path
end
在控制台中,这工作正常。
>> pp @game.nil?
=> true
在应用程序中失败(它永远不会重定向!),为什么?
编辑1:
在控制台中(使用参数 id nil 或不存在的记录值):这有效:
unless Game.exists?(params[:id])
raise('ok')
end
但不是在现实生活中的应用程序中:(我尝试了几乎所有方法来检查记录是否存在或有效,代码只是通过了这个检查并继续原样
编辑2:
查看其他一些代码,我注意到我使用了 return 语句,它似乎可以解决它,所以..
作品:
unless Game.exists?(params[:id])
redirect_to root_path
return
end
失败:
unless Game.exists?(params[:id])
redirect_to root_path
end
不太清楚为什么在redirect_to显式之后需要返回