ruby-on-rails – Rails将schema.rb时间戳更改为日期时间
与其他开发人员合作时,这个问题似乎一直在发生.我们有一个像这样的迁移创建的表(由postgres支持):
create_table :subscription_events do |t| t.integer :subscriber_id t.text :source_url t.text :params t.text :session t.timestamps end 然后在运行rake db:migrate之后的未来看似随机的时间点,Rails想要更新schema.rb文件以使用datetime而不是timestamp,从而导致整个create_table调用的另外令人困惑的重新注册: create_table "subscription_events",:force => true do |t| - t.integer "subscriber_id" - t.text "source_url" - t.text "params" - t.text "session" - t.timestamp "created_at",:limit => 6,:null => false - t.timestamp "updated_at",:null => false + t.integer "subscriber_id" + t.text "source_url" + t.text "params" + t.text "session" + t.datetime "created_at",:null => false + t.datetime "updated_at",:null => false end 是什么造成的?我们应该检查这个修改过的文件还是每次都重置它? 解决方法
这不应该导致任何“重新索引”,因为:datetime和:timestamp迁移类型都映射到PostgreSQL的TIMESTAMP数据类型.
这可能是由于固有无序的ActiveRecord :: ConnectionAdapters :: PostgreSQLAdapter :: NATIVE_DATABASE_TYPES常量导致的,该常量被定义为标准哈希.当ActiveRecord搜索’TIMESTAMP’的第一个合适匹配时,它可能会发现:datetime或:timestamp不可预测(因为两者都匹配). 简而言之,不要大惊小怪,因为这不应该影响您的数据或架构. UPDATE 转储中使用的rails’数据类型’是使用simplified_type方法找到的,该方法将返回:TIMESTAMP数据类型的datetime.更有可能的是,您已升级了Rails版本,其中先前版本具有用于确定数据类型的不同方法.不管是什么原因,这不应该以任何方式影响你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 介绍Ruby中的模块与混合类型的相关知识
- 颤动:将两个Streams流式传输到一个屏幕上?
- ruby-on-rails – 在textmate中自动格式化ERB模板
- flex – openWithDefaultApplication在应用程序文
- objective-c – ObjC / iOS:NSCFString不是NSSt
- Oracle 11g队列锁等待事件解释
- React中文教程翻译文档 - Common Questions 常见
- 手动调用ajax更新yii中的list view
- ruby-on-rails – 我的设计控制器rspec中的“pos
- swift详解之十-------------异常处理、类型转换