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

时间:2015-01-04 13:48:23

标签: ruby-on-rails rails-activerecord

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

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

t.timestamps

在迁移文件中。

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

1 个答案:

答案 0 :(得分:1)

由于数据类型为hardcoded,您无法使t.timestamps创建除datetime以外的任何内容的对。

但请注意,ActiveRecord并不关心底层类型。如果使用整数数据类型手动创建这些字段(或转换现有表)并编辑/创建记录,ActiveRecord将尝试使用Time.zone.now(或Time.now设置值,具体取决于您的{{1设置)但该值将自动转换为整数。

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