【问题标题】:NoMethodError - undefined method `key?' for #<ActionDispatch::Request::Session::Options:0x00007fe03ee04608>:NoMethodError - 未定义的方法“键?”对于#<ActionDispatch::Request::Session::Options:0x00007fe03ee04608>:
【发布时间】:2020-08-19 03:56:05
【问题描述】:

当我使用rails s 启动服务器时,我收到以下错误。

【问题讨论】:

  • 看起来 key? 不是可以在该对象上调用的方法。您可能希望将其更改为哈希。试试options.to_h.key?(k)
  • 请在您的问题中发布实际代码 sn-ps 而不是代码图像。无法搜索图像,并且在尝试复制某人的示例时难以剪切和粘贴。
  • 对不起,我完全没有回答你发布的代码不是你的(这是漫长的一天)。看起来您配置 redis 缓存的方式可能存在问题。您可以编辑您的问题以在您配置会话存储的位置包含您的初始化程序吗?

标签: ruby-on-rails software-distribution


【解决方案1】:

在您的情况下,options 是 ActionDispatch::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, value, options.to_hash.slice(*REDIS_SET_OPTIONS))
end

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-22
        • 2016-11-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多