代码之家  ›  专栏  ›  技术社区  ›  user24359

轨道中的时间字段返回空白

  •  2
  • user24359  · 技术社区  · 16 年前

    我在sqlite3上运行了一个简单的rails 3.b1(ruby 1.9.1)应用程序。我有这张桌子:

    create_table :time_tests do |t|
      t.time :time
    end
    

    我看到这种行为:

    irb(main):001:0> tt = TimeTest.new
    => #<TimeTest id: nil, time: nil>
    irb(main):002:0> tt.time = Time.zone.now
    => Mon, 03 May 2010 20:13:21 UTC +00:00
    irb(main):003:0> tt.save
    => true
    irb(main):004:0> TimeTest.find(:first)
    => #<TimeTest id: 1, time: "2000-01-01 20:13:21">
    

    所以,时间一片空白。检查表,数据看起来正常:

    sqlite> select * from time_tests;
    1|2010-05-03 20:13:21.774741
    

    我想是在检索部分?这是怎么回事?

    1 回复  |  直到 16 年前
        1
  •  4
  •   Tony Fontenot    16 年前

    技术上 它不会空手而归。它以一个默认日期的时间返回。它返回 2000-01-01 20:13:21 作为时间,这是预期的。

    Rails正在将数据神奇地加载到时间对象中并清除日期(因为您只告诉它存储时间)。

    如果要存储日期和时间,则需要将列定义为 datetime . 相反,如果你只想要一个约会,你会用 date .

    所以,请再说一遍:

    date => "2010-12-12 00:00:00"
    time => "2000-01-01 13:14:15"
    datetime => "2010-12-12 13:14:15"
    
    推荐文章