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.timestamps
与 datetime
以外的任何内容创建对,因为数据类型是 hardcoded。
但是请注意,ActiveRecord 并不真正关心底层类型。如果您使用整数数据类型(或转换现有 table)和 edit/create 记录手动创建这些字段,ActiveRecord 将尝试使用 Time.zone.now
(或 Time.now
取决于您的 default_timezone
设置),但该值将立即自动转换为整数。
缺点是 AR 不会将值转换回日期时间,因此如果您想将值存储为整数,但要像处理日期时间一样使用它们,则需要手动进行转换。
是否可以设置 Rails 来记录 unix 时间戳(存储为 INT),而不是 updated_at 和 created_at 的常规 DATETIME 字段?
这些是通过以下方式定义的:
t.timestamps
在迁移文件中。
注意:我不想将它转换为 unix 时间戳,我希望它作为 unix 时间戳存储在数据库中。
您无法使 t.timestamps
与 datetime
以外的任何内容创建对,因为数据类型是 hardcoded。
但是请注意,ActiveRecord 并不真正关心底层类型。如果您使用整数数据类型(或转换现有 table)和 edit/create 记录手动创建这些字段,ActiveRecord 将尝试使用 Time.zone.now
(或 Time.now
取决于您的 default_timezone
设置),但该值将立即自动转换为整数。
缺点是 AR 不会将值转换回日期时间,因此如果您想将值存储为整数,但要像处理日期时间一样使用它们,则需要手动进行转换。