加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails将schema.rb时间戳更改为日期时间

发布时间:2020-12-17 03:55:00 所属栏目:百科 来源:网络整理
导读:与其他开发人员合作时,这个问题似乎一直在发生.我们有一个像这样的迁移创建的表(由postgres支持): create_table :subscription_events do |t| t.integer :subscriber_id t.text :source_url t.text :params t.text :session t.timestampsend 然后在运行rake
与其他开发人员合作时,这个问题似乎一直在发生.我们有一个像这样的迁移创建的表(由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版本,其中先前版本具有用于确定数据类型的不同方法.不管是什么原因,这不应该以任何方式影响你.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读