尝试在MySQL数据库中设置datetime字段时出现Ruby错误

时间:2015-01-28 16:13:31

标签: mysql ruby-on-rails ruby datetime

我正在使用rails 4.0.0,ruby 2.2.0 试图在MySQL服务器的一个表中设置datetime字段我正在观察跟随错误。任何人都可以提出这个问题。

    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>'

1 个答案:

答案 0 :(得分:1)

您可以按照MrYoshiji的建议使用DateTime.parse(&#34; 2014-03-12 14:45:00&#34;)。为避免出现时区问题,您可以在application.rb中指定一个设置:

config.time_zone = "Eastern Time (US & Canada)"

数据库MySQL例如总是以GMT格式存储时间,但是rails会在指定的时区中提取日期时间,即它会自动转换它。希望这会有所帮助。