NoMethodError-未定义的方法“键?”对于#<ActionDispatch :: Request :: Session :: Options:0x00007fe03ee04608>:

问题描述

使用rails s启动服务器时,出现以下错误

stacktrace

解决方法

在您的情况下,optionsActionDispatch::Request::Session::Options对象,而不是Hash。您可以调用.to_hash将其转换为Hash

您可以仅使用slice提取相关的键/值来代替当前的方法:

REDIS_SET_OPTIONS = %i(ex px nx xx keepttl).freeze

def set (key,value,options = nil)
  return super(key,value) unless options

  super(key,options.to_hash.slice(*REDIS_SET_OPTIONS))
end
,

.key?按照约定将返回一个布尔值。因此,您的块是无操作的,因为结果不会做任何事情。你想做什么?

,

虽然这个问题真的很晚,但我目前遇到了这个问题。在我的情况下,由于依赖于 redis-rails 的 redis-store 引发了异常。所以当我修复 redis-rails 的版本时,异常消失了。如果您还在为这个问题苦苦挣扎,希望能帮到您。

gem 'redis-rails','~> 4.0.0'