ruby-on-rails – Ruby on Rails:为什么ActiveRecord使用“datetime”类型而不是“timestamp”来表示时间戳字段?

在我的数据库迁移文件中,我插入了以下行:

t.timestamps

正如我所料,创建了两列:“updated_at”和“created_at”.但是,它们的类型是“datetime”而不是“timestamp”.

我正在使用MySQL和“timestamp”类型,据我所知,is designed exactly for such cases,因为它使用更少的空间并且与时区无关.

那么,有什么理由,为什么Rails 3使用“datetime”而不是“timestamp”?我应该尝试解决这个问题吗?如果是,除了不使用“t.timestamps”并且每次为每个新表分别定义“updated_at”和“created_at”列时,有没有办法做到这一点?

最佳答案
从内存中,mysql时间戳列类型的行为类似于updated_at,因为每当更新记录时,它都会使用当前时间进行更新.

虽然这对updated_at列很有用,但这不是created_at所需的行为.

此外,Rails处理应用程序设置中指定的时区(通常应设置为UTC),因此使用mysql的时间可能与其他日期时间记录不一致.

转载注明原文:ruby-on-rails – Ruby on Rails:为什么ActiveRecord使用“datetime”类型而不是“timestamp”来表示时间戳字段? - 代码日志