【问题标题】:Rails timestamps use int (unixtime) rather than DATETIME for updated_at and created_atRails 时间戳对 updated_at 和 created_at 使用 int (unixtime) 而不是 DATETIME
【发布时间】:2015-01-04 13:48:23
【问题描述】:
是否可以将 Rails 设置为记录 unix 时间戳(存储为 INT),而不是用于 updated_at 和 created_at 的常规 DATETIME 字段?
这些是通过以下方式定义的:
t.timestamps
在迁移文件中。
注意:我不想将其转换为 unix 时间戳,我希望将其作为 unixtime stamp 存储在数据库中。
【问题讨论】:
标签:
ruby-on-rails
rails-activerecord
【解决方案1】:
你不能用t.timestamps 来创建与datetime 以外的任何东西的对,因为数据类型是hardcoded。
但是请注意,ActiveRecord 并不真正关心底层类型。如果您使用整数数据类型手动创建这些字段(或转换现有表)并编辑/创建记录,ActiveRecord 将尝试使用Time.zone.now(或Time.now,取决于您的default_timezone 设置)设置值,但值将在之后自动转换为整数。
缺点是 AR 不会将值转换回日期时间,因此如果您想将值存储为整数但像使用日期时间一样使用它们,则需要手动进行转换。