Rails Activerecord/Postgres时间格式

skw*_*eth 5 postgresql time activerecord ruby-on-rails rails-activerecord

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

t.time :time
Run Code Online (Sandbox Code Playgroud)

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

time: "2000-01-01 16:57:19"
Run Code Online (Sandbox Code Playgroud)

我只想让列存储时间(如'16:57:19').'time'是正确的数据类型吗?还是有其他方法我应该处理这个问题?

非常感谢你.

mu *_*ort 13

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

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

在数据库中一切都会好的,但是当你在Rails中的数据库之外时,你必须谨慎地忽略日期组件.