在我的数据库迁移文件中,我插入了以下行:
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 - 什么时候应该使用DateTime vs date,ruby/rails中的时间字段?
- ruby-on-rails - rails生成模型字段:类型,字段的选项是什么类型?
- ruby-on-rails - 在Ruby on Rails中,DateTime,Timestamp,Time和Date之间有什么区别?
- ruby-on-rails - Rails activerecord:按日期时间字段查询记录?
- mysql - Rails 3,将模型中的字段从字符串更改为日期时间类型
- ruby-on-rails - 将ActiveRecord日期和时间组合到DateTime中
- ruby-on-rails - 为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?
- ruby-on-rails - Rails ActiveRecord - update_all:如何使用混合类型的参数一次更新多个字段
转载注明原文:ruby-on-rails – Ruby on Rails:为什么ActiveRecord使用“datetime”类型而不是“timestamp”来表示时间戳字段? - 代码日志