未定义的方法`httpdate'表示“...”:字符串

时间:2016-10-24 08:17:56

标签: ruby-on-rails ruby-on-rails-5

此代码突然停止工作,我不明白为什么。

class MyClass < ApplicationController
  ...
  def method
    @myobject = @my_objects.order(:updated_at).last
    if stale?(@myobject)
      ...
    end
  end
end

问题出在如果陈旧?(@ myobject),错误是

MyClass中的NoMethodError#my_method

undefined method`httpdate'for“2016-10-23 20:44:26 UTC”:String

actionpack(5.0.0.1)lib / action_dispatch / http / cache.rb:64:in`last_modified ='

通过替换代码来解决问题:

class MyClass < ApplicationController
  ...
  def my_method
    @myobject = @my_objects.order(:updated_at).last
    t = Time.parse(@myobject.updated_at)
    if stale?(etag: @myobject, last_modified: t)
      ...
    end
  end
end

但第一个版本也应该由API doc起作用并且它有效!

我想了解导致第一版不可行的原因并解决问题。我最近所做的一切 - Debian软件包升级,但我认为这不是原因。

OS:Debian GNU / Linux 8.6(jessie)

Ruby版本:ruby-2.3.0 [x86_64](rvm)

Rails版本:5.0.0.1

1 个答案:

答案 0 :(得分:0)

这可能是因为日期 - 时间字段。每当你使用它时,你需要解析Time.parse的时间或Date.parse的日期。时区也是一个主要问题。

请参考rails Doc。