ruby-on-rails - 无方法错误 : undefined method `getlocal' for DateTime object

标签 ruby-on-rails datetime ruby-on-rails-3 heroku

当用户登录我的网站时,Devise尝试用时间更新用户模型 current_sign_in_at 中的字段。但它产生了这个错误:

NoMethodError: undefined method `getlocal' for Mon, 08 Nov 2010 03:11:01 +0000:DateTime
[GEM_ROOT]/gems/activesupport-3.0.1/lib/active_support/time_with_zone.rb:75

我找到了一些资源,其中人们提到了这个问题。有一个 issue on Github没有答案。 This page有一个适用于我的开发环境的解决方案,因为它涉及编辑 /lib/active_support/time_with_zone.rb,但我需要一个也适用于我的 Heroku 生产环境的解决方案。有没有办法在 Heroku 上使用我编辑过的 /lib/active_support/time_with_zone.rb 版本?或者有更好的方法来处理这个问题吗?

这是我正在使用的:

Rails 3.0.1
ruby 1.9.2p0 (2010-08-18 revision 29036)

感谢阅读。

最佳答案

 irb> Time.now.getlocal
 => Mon Nov 08 15:04:05 +0200 2010 

但是

irb>DateTime.now.getlocal
NoMethodError: undefined method `getlocal' for Mon, 08 Nov 2010 15:05:16 +0200:DateTime
from (irb):17

因此,我假设您需要将 DateTime 对象转换为 Time

已更新

你可以使用 Ruby mixin 技术,比如

irb > module DateTimePatch
irb ?>  def get_local
irb ?>    "works!"
irb ?>    end
irb ?>  end
 => nil 
irb > DateTime.send(:include, DateTimePatch)
 => DateTime 
irb2 > DateTime.now.get_local
 => "works!" 

关于ruby-on-rails - 无方法错误 : undefined method `getlocal' for DateTime object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4123683/

相关文章:

ios - 如何将日期字符串从 Rails 转换为 Swift

javascript - jQuery 在单击元素时向下滚动

Javascript getMonth 在添加天数后返回上个月

ruby-on-rails-3 - 你如何在 Rails 3 上使用 RR(双 ruby )模拟一个带有 block 的方法

javascript - Rails 和 knockout.js 绑定(bind)嵌套元素而不在 fields_for 中使用 foreach

c# 获取 UTC 特定时区的午夜时间

c# - DateTime.Now 在类构造函数中

ruby-on-rails-3 - 如果不使用命名范围那么如何?

ruby - 如何包含页面特定的 JavaScript?

javascript - 通过ajax上传文件以及表单数据的其余部分