Ruby on rails Rails迁移清理/重做

Ruby on rails Rails迁移清理/重做,ruby-on-rails,ruby,migration,rails-activerecord,Ruby On Rails,Ruby,Migration,Rails Activerecord,所以,假设我有10个模型,它们在100个迁移文件的过程中不断发展。是否有某种实用程序可以查看我的模式并构建10个“干净”的迁移文件 迁移: class CreateFoos < ActiveRecord::Migration def change create_table :foos do |t| t.belongs_to :bar t.string :baz t.integer :qux, default: 0 end

所以,假设我有10个模型,它们在100个迁移文件的过程中不断发展。是否有某种实用程序可以查看我的模式并构建10个“干净”的迁移文件

迁移:

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.belongs_to  :bar
      t.string :baz
      t.integer :qux, default: 0
    end

    add_index :foos, :bar_id
  end
end

我只是觉得。。。如果它知道如何从迁移到模式,那么反之亦然就很容易了。这听起来很愚蠢吗?

如果您不关心实际数据,并且正在处理一个新的安装,您只想使用schema.rb创建数据库结构,那么应该使用
rake DB:schema:load

更多详情:


我发现您可以在迁移应用到所有数据库(从开发到生产)之后删除迁移。如果要从头开始填充新的开发或生产数据库,可以(a)备份生产并还原到新数据库,或者(b)使用
rake db:schema:load
从schema.rb文件加载


如果您确实希望迁移有助于文档的编写或清晰,请创建一个新的模式
railsgmigrationschema2014
。将迁移应用于生产后,删除所有旧迁移文件并将schema.rb复制到新迁移中。

这两个代码都是迁移的一部分。。schema是什么意思?第二块代码来自schema.rb假设您有10个迁移文件。现在您要更改或替换第五个迁移文件。然后执行rake db:rollback STEP=5,然后编辑第5个并保存它。然后运行
rakedb:migrate
。(但您将丢失数据):)这是您的风险。或者
rake db:migrate:down VERSION=235634534
回滚特定的迁移。就其本身而言,我不想改变任何事情。我只是想清理我的迁移,因为你真的不需要它们。这两个命令就足够了,rake db:create和rake db:schema:load。我这么说是因为一年前我也有同样的感觉,真的很难消化。对。。。我可以删除所有迁移吗?是的,你可以,前提是你在这个场景中第一次实例化生产。
ActiveRecord::Schema.define(:version => 20140610225017) do
  create_table "foos", :force => true do |t|
    t.integer  "bar_id"
    t.string   "baz"
    t.integer  "qux",         :default => 0
  end

  add_index "foos", ["bar_id"], :name => "index_foos_on_bar_id"
end