Rails中的时间字段空白

我有一个在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 => # 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) => # 

所以,时间又回来了。 检查表,数据看起来没问题:

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

我想这是在检索部分? 这里发生了什么?

从技术上讲 ,它不是空白。 它会以默认日期返回。 它返回2000-01-01 20:13:21作为时间,这是预期的。

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

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

所以回顾一下:

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