【发布时间】:2017-03-27 17:19:54
【问题描述】:
我目前正在开发一个 Rails 4 应用程序,在过去的几个月里,我收集了许多独特的迁移文件,这些文件可以逆转自己的更改等。
由于我在这个开发阶段重置数据库没有问题,我想我可以稍微清理一下这个烂摊子。
有没有办法重做所有迁移文件,同时还允许删除某些迁移文件并扩展其他文件?
我感谢每一个答案!
示例(编辑)
我有两个迁移文件:
- 20160911071103_create_items.rb
- 20160918085621_add_cached_votes_to_items.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
【问题讨论】:
-
不确定重做所有迁移文件是什么意思?你可以给出你的应用程序的实际例子,我认为这会更有意义!
-
@dkp 添加了一个示例
-
rake db:reset -
我认为根本没有必要保留旧的迁移文件。在所有环境中运行迁移后,您可以保存以删除它们。无论如何,您当前的数据库方案存储在
schema.rb中。该文件用于设置测试数据库。新开发人员通常会从数据库转储开始,或者也可以使用schema.rb。为什么要维护旧的迁移?你想达到什么目标? -
@spickermann 如果可能的话,我基本上想再次从一个空白模式开始,然后迁移我所有更改的迁移文件。
标签: ruby-on-rails ruby database ruby-on-rails-4 migration