我正在使用Postgres数据库开发Rails项目。对于我的一个模型,我有一个时间列,称为(巧妙)时间。当我创建模型时,我将此列的数据类型设置为' time',并且(可能不正确)了解此数据类型仅用于存储时间,没有日期。
t.time :time
但是,当我向模型提交数据时,时间是正确的,但前缀是错误的日期:
time: "2000-01-01 16:57:19"
我只想让专栏存储时间(例如' 16:57:19')。是时候'要使用正确的数据类型?或者还有其他方法可以解决这个问题吗?
非常感谢。
答案 0 :(得分:11)
问题是Ruby或Rails中没有时间类。所有时间类都是日期或时间戳(即日期加上一天中的时间)。
在数据库内部,它将是time
(没有时区)列,它将在数据库中正常运行。但是,一旦进入Ruby,ActiveRecord将添加一个日期组件,因为没有可用的普通时间类,它恰好使用2000-01-01作为日期。
数据库中的所有内容都没问题,但是当你在Rails中的数据库之外时,你必须谨慎地忽略日期组件。