Rails的迁移总是插入空格或改变列的顺序在架构

问题描述 投票:13回答:4

有一个令人沮丧的问题,在我的轨道迁移更新空格的模式和表的列的位置。

所以大多数时候,我跑bundle exec rake db:migrate它会做的以下情况之一。当我这个合并到我们的主分支和其他开发商合作过这一点,那么他们的轨道迁移恢复选项卡和位置排序。

我们注意到,所有三个开发人员团队运行迁移时,如果我一直架构的最后提交者有同样的问题。

我刚刚更新postgres to v9.2.4是一样的其他开发者。的还有什么我可以尝试任何想法?

Examples

下面是混帐diff文件证明发生了什么。

重新排序的模式例:

   create_table "accounts", :force => true do |t|
     t.integer  "organisation_id"
-    t.boolean  "active",             :default => false
     t.text     "notes"
+    t.boolean  "active",             :default => false
   end

添加标签来的模式的示例:

   create_table "comments", :force => true do |t|
-    t.integer  "commentable_id",   :default => 0
-    t.string   "commentable_type", :default => ""
+    t.integer  "commentable_id",     :default => 0
+    t.string   "commentable_type",   :default => ""
-    t.datetime "created_at",                       :null => false
-    t.datetime "updated_at",                       :null => false
+    t.datetime "created_at",                            :null => false
+    t.datetime "updated_at",                            :null => false
ruby-on-rails ruby-on-rails-3.2 postgresql-9.2 rails-postgresql pg
4个回答
4
投票

我建了一个宝石来解决这个问题。

它的列进行排序,索引名和外键,去除多余的空格和运行Rubocop一些格式统一的schema.rb文件的输出。

https://github.com/jakeonrails/fix-db-schema-conflicts

当你将它添加到你的Gemfile你只要运行耙分贝:迁移或耙分贝:架构:甩正常人一样。


1
投票

好消息!轨终于推出解决了这个确切的更新。从Rails的V5.1.0开始,默认(和唯一的选择)是在列之间删除任何多余的空格。


0
投票

我怀疑这个错误是由空格(“标签宽度”,如果你使用的是升华)的不同配置而引起的。


-13
投票

你刚才应该忽略你的版本控制schema.rb。它改变了不同取决于迁移阶和谁产生他们。你只需要迁移到产生参与项目每个开发人员的appropiated架构。

问候。

© www.soinside.com 2019 - 2024. All rights reserved.