我使用的是 rails 4.0.0,ruby 2.2.0 尝试在 MySQL 服务器的一个表中设置日期时间字段,我观察到以下错误。任何人都可以提出问题所在。
2.2.0 :048 > hm.start_time = "2014-03-12 14:45:00"
NoMethodError: undefined method `year' for nil:NilClass
from /usr/local/rvm/gems/ruby-2.2.0/gems/activesupport-4.0.0/lib/active_support/values/time_zone.rb:287:in `parse'
from /usr/local/rvm/gems/ruby-2.2.0/gems/activesupport-4.0.0/lib/active_support/core_ext/string/zones.rb:8:in `in_time_zone'
from /usr/local/rvm/gems/ruby-2.2.0/gems/activerecord-4.0.0/lib/active_record/attribute_methods/time_zone_conversion.rb:37:in `start_time='
from (irb):48
from /usr/local/rvm/gems/ruby-2.2.0/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
from /usr/local/rvm/gems/ruby-2.2.0/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
from /usr/local/rvm/gems/ruby-2.2.0/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>'
from bin/rails:34:in `require'
from bin/rails:34:in `<main>'
最佳答案
您可以按照 MrYoshiji 的建议使用 DateTime.parse("2014-03-12 14:45:00")。为了避免时区问题,您可以在 application.rb 中指定一个设置:
config.time_zone = "Eastern Time (US & Canada)"
例如,数据库 MySQL 始终以 GMT 格式存储时间,但 Rails 将提取您指定时区的日期时间,即,它会自动转换它。希望这会有所帮助。
关于mysql - 试图在 MySQL 数据库中设置日期时间字段的 Ruby 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28197061/