Rails Activerecord / Postgres时间格式

时间:2016-01-24 17:18:43

标签: ruby-on-rails postgresql activerecord time rails-activerecord

我正在使用Postgres数据库开发Rails项目。对于我的一个模型,我有一个时间列,称为(巧妙)时间。当我创建模型时,我将此列的数据类型设置为' time',并且(可能不正确)了解此数据类型仅用于存储时间,没有日期。

t.time :time

但是,当我向模型提交数据时,时间是正确的,但前缀是错误的日期:

time: "2000-01-01 16:57:19"

我只想让专栏存储时间(例如' 16:57:19')。是时候'要使用正确的数据类型?或者还有其他方法可以解决这个问题吗?

非常感谢。

1 个答案:

答案 0 :(得分:11)

问题是Ruby或Rails中没有时间类。所有时间类都是日期或时间戳(即日期加上一天中的时间)。

在数据库内部,它将是time(没有时区)列,它将在数据库中正常运行。但是,一旦进入Ruby,ActiveRecord将添加一个日期组件,因为没有可用的普通时间类,它恰好使用2000-01-01作为日期。

数据库中的所有内容都没问题,但是当你在Rails中的数据库之外时,你必须谨慎地忽略日期组件。