Rails迁移清理/重做

时间:2014-06-13 17:00:50

标签: ruby-on-rails ruby migration rails-activerecord

所以,我说有10个模型在100个迁移文件的过程中不断发展。是否有某种实用程序可以查看我的架构并构建10' clean'迁移文件?

迁移:

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

模式:

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

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

2 个答案:

答案 0 :(得分:1)

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

如果您确实希望迁移某些文档或清晰度,请创建新架构rails g migration schema2014。将迁移应用于生产后,删除所有旧迁移文件并将schema.rb复制到新迁移中。

答案 1 :(得分:0)

如果您不关心实际数据并且正在处理要使用schema.rb创建数据库结构的新安装,则应使用rake db:schema:load

更多详情:

rake db:schema:load vs. migrations

Generate a migration file from schema.rb