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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails的迁移总是插入空格或改变列的顺序在架构相关的知识,希望对你有一定的参考价值。

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

所以大多数时候,我跑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
答案

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

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

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

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

另一答案

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

另一答案

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

另一答案

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

问候。

以上是关于Rails的迁移总是插入空格或改变列的顺序在架构的主要内容,如果未能解决你的问题,请参考以下文章

pandas 中 DataFramt 改变 列的顺序

更改列的 Rails 迁移

在 postgresql 应用程序的 rails 中运行迁移后的顺序注意事项

Rails 架构未随迁移而更新

Rails 3 SQLite3 布尔值 false

如何在现有的rails模型中使用mongoid来种植数据?