Rails 时间戳使用 int (unixtime) 而不是 updated_at 和 created_at 的 DATETIME

Rails timestamps use int (unixtime) rather than DATETIME for updated_at and created_at

是否可以设置 Rails 来记录 unix 时间戳(存储为 INT),而不是 updated_at 和 created_at 的常规 DATETIME 字段?

这些是通过以下方式定义的:

t.timestamps

在迁移文件中。

注意:我不想将它转换为 unix 时间戳,我希望它作为 unix 时间戳存储在数据库中。

您无法使 t.timestampsdatetime 以外的任何内容创建对,因为数据类型是 hardcoded

但是请注意,ActiveRecord 并不真正关心底层类型。如果您使用整数数据类型(或转换现有 table)和 edit/create 记录手动创建这些字段,ActiveRecord 将尝试使用 Time.zone.now(或 Time.now取决于您的 default_timezone 设置),但该值将立即自动转换为整数。

缺点是 AR 不会将值转换回日期时间,因此如果您想将值存储为整数,但要像处理日期时间一样使用它们,则需要手动进行转换。