【发布时间】:2019-08-19 18:39:19
【问题描述】:
上周我创建了几张表,并被告知要删除它们。我应该这样做的建议方式如下所示:
示例表:
class CreateMenuTable < ActiveRecord::Migration
def change
create_table :menus do |t|
t.string :name
t.timestamps null: false
end
end
end
class CreateSpreeMenuRole < ActiveRecord::Migration
def change
create_table :menu_roles do |t|
t.belongs_to :role, class_name: 'Role'
t.belongs_to :menu, class_name: 'Menu'
t.timestamps null: false
end
end
end
第 1 步。 bin/rake db:rollback STEP=6
第 2 步。 回滚后我必须注释掉那些表格
第 3 步。 bin/rake db:migrate
顺便说一句,在那之后我们仍然创建了多个表,这就是为什么我们仍然需要运行migrate。
【问题讨论】:
-
为什么不直接使用创建一个新的迁移,在其中使用
drop_table删除不再需要的表?如果您想保留更新的表格,回滚对我来说没有意义。 -
@spickermann 我不知道他们为什么推荐这个。我实际上正在考虑在一次迁移中删除表。所以回滚不是一个好方法?
-
回滚并仅重新运行您想要保留的迁移将删除较新表中的所有数据。我认为这不是一个好主意...
-
我不知道争论的人。我只是这里的小学生。但我知道这是错误的做法。谢谢。
标签: ruby-on-rails ruby migration rails-migrations