当用户登录我的网站时,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/