Ruby on rails Rails3.1升级导致Cookie.signed上出现Nomethoder错误
我在从Rails 3.0.10升级到Rails 3.1的应用程序中遇到了一些关于cookie store的非常奇怪的问题 我可以将失败的规范与此隔离:Ruby on rails Rails3.1升级导致Cookie.signed上出现Nomethoder错误,ruby-on-rails,cookies,rspec,ruby-on-rails-3.1,Ruby On Rails,Cookies,Rspec,Ruby On Rails 3.1,我在从Rails 3.0.10升级到Rails 3.1的应用程序中遇到了一些关于cookie store的非常奇怪的问题 我可以将失败的规范与此隔离: class TestController before_filter :check_cookie def index; end private def check_cookie if cookies.signed.present? cookies.delete(:test) end end
class TestController
before_filter :check_cookie
def index; end
private
def check_cookie
if cookies.signed.present?
cookies.delete(:test)
end
end
end
所有调用check_cookie筛选器的规范都会失败,并显示如下错误消息:
NoMethodError:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.delete
# ./app/controllers/test_controller.rb:10:in `check_cookie'
为了进一步调试,我尝试在输出cookies中添加一条语句。在尝试调用delete
之前先签名:
if cookies.signed.present?
puts "Knock, knock? #{cookies.signed.respond_to?(:delete)}"
...
这将输出“true”,但规格仍然失败
带Rspec 2.6.0的运行轨道3.1.0
有没有办法解决这个问题?谢谢 删除cookie之前,请尝试检查cookie是否存在:
if cookies.signed.present? && cookies.has_key?(:test)
cookies.delete(:test)
end
在删除cookie之前,请尝试检查cookie是否存在:
if cookies.signed.present? && cookies.has_key?(:test)
cookies.delete(:test)
end
您正在对Cookie调用delete,但正在输入Cookie.signed.respond\u to是否:删除,可能是您应该检查cookies。是否响应?:删除?您正在对cookies调用delete,但您正在输入cookies.signed.response\u to?:删除,可能是您应该检查cookies。是否响应?:删除