我正在使用 Postgres 数据库开发 Rails 项目。对于我的一个模型,我有一个时间列,称为(巧妙地)时间。当我创建模型时,我将此列的数据类型设置为“时间”,并且(可能不正确)理解此数据类型仅用于存储时间,不存储日期。
t.time :time
但是,当我向模型提交数据时,时间是正确的,但以不正确的日期为前缀:
time: "2000-01-01 16:57:19"
我只想让列存储时间(例如“16:57:19”)。 “时间”是要使用的正确数据类型吗?还是有其他方法可以解决这个问题?
非常感谢。
最佳答案
问题是 Ruby 或 Rails 中没有时间类。所有时间类都是日期或时间戳(即日期加上一天中的时间)。
在数据库中它将是一个time
。 (没有时区)列,它将在数据库中正常运行。但是,一旦时间进入 Ruby,ActiveRecord 将添加一个日期组件,因为没有可用的普通时间类,它恰好使用 2000-01-01 作为日期。
数据库内部的一切都会很好,但是当您在 Rails 中的数据库外部时,您必须谨慎行事以忽略日期组件。
关于ruby-on-rails - Rails Activerecord/Postgres 时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34978905/