我目前正在开发一个rails 4应用程序,在过去的几个月里,我收集了很多独特的迁移文件,这些文件可以逆转它们自己的更改,等等。
由于在这个开发阶段重置数据库没有问题,我想我可以稍微清理一下这个烂摊子。有没有一种方法可以重做所有迁移文件,同时允许删除某些迁移文件和扩展其他文件?
我很感激你的回答!
示例(编辑)
我有两个迁移文件:
20160911071103_创建_items.rb
20160918085621_将缓存的选票添加到项目。rb
两者都已迁移。<
之前的第一个文件

class CreateItems < ActiveRecord::Migration
  def change
    create_table :items do |t|

      t.integer :user_id

      t.timestamps null: false
    end
  end
end

我的目标是将第二个文件添加的列直接包含在第一个文件中,并删除第二个文件。
之后的第一个文件
class CreateItems < ActiveRecord::Migration
  def change
    create_table :items do |t|

      t.integer :user_id
      t.integer :cached_votes

      t.timestamps null: false
    end
  end
end

最佳答案

你得跑了
rake db:migrate:down VERSION=20160918085621
rake db:migrate:down VERSION=20160911071103
现在您可以通过rake db:migrate:status检查迁移状态,您应该期望获得如下迁移状态:

down 20160911071103
down 20160918085621

现在,您可以删除迁移文件20160918085621_add_cached_votes_to_items.rb
&根据需要编辑迁移文件20160911071103_create_items.rb
最后运行:
rake db:migrate:up VERSION=20160911071103

关于ruby-on-rails - Rails 4:重新迁移所有迁移到架构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40582507/

10-12 01:06