ruby-on-rails - Rails Activerecord/Postgres 时间格式

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

我正在使用 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/

相关文章:

ruby-on-rails - 在 Ruby 中生成一个带有 n 位数字(开头为 0 除外)的随机字符串

postgresql - 如何避免在 PostgreSQL 9.2.1 中循环触发调用

postgresql - Debezium是否可以连接9.6以上版本的Postgres slave?

node.js - findOne 中的 Sequelize 属性返回所有字段

ruby-on-rails - 在 ActiveRecord 中,如何在 before_save 回调中使用 'changed'(脏)?

ruby-on-rails - 查找数组元素

java - 是否可以使用 google 图表 API 将列变成超链接?

ruby-on-rails - has_one 与同一类的关系

ruby-on-rails - 在 Rails 中进行 Http 基本身份验证

ruby-on-rails - ActiveRecord 参数错误 : negative string size (or size too big)