rails通过迁移删除旧模型

bra*_*rad 16 migration refactoring ruby-on-rails

我有一堆rails模型,我正在重写为单个模型,以简化我的代码并减少不必要的表.

我想知道删除模型类及其表的最佳方法是什么.我希望过去的迁移仍能成功,但我不想让空模型四处闲置.我是否必须手动删除引用这些模型的旧迁移,然后手动删除类文件?

有没有人有最好的方法来做到这一点?

Luc*_*cio 17

一体化解决方案.

运行以下命令:

rails destroy model ModelName
rails g migration DropTableModelName
Run Code Online (Sandbox Code Playgroud)

前者将生成一个新的迁移文件,该文件应如下所示:

class DropTableModelName < ActiveRecord::Migration
  def change
    drop_table :model_name
  end
end
Run Code Online (Sandbox Code Playgroud)

现在跑了db:migrate,你就完成了.


djb*_*009 14

如果您想完全摆脱模型,其表格执行此操作:

rails destroy model Name
Run Code Online (Sandbox Code Playgroud)

  • 这不会生成`remove_table`迁移,而是删除`create`.所以模型仍然在`schema.rb`中...... (7认同)

Per*_*ich 8

这个问题现在有点陈旧,但我刚刚做了:

rails destroy scaffold <ModelName> -p
Run Code Online (Sandbox Code Playgroud)

-p标志显示"假装"输出,这有助于查看将要发生的事情.删除'-p'标志,结果将与输出匹配.这清理了整个MVC文件集合+测试+ js文件+原始迁移,没问题.

我想如果你是一个喜欢手动编辑你的迁移并在每个中包含多个步骤的人,那么丢失原始迁移可能会破坏db:setup,所以买家要小心.保持一个动作==一个迁移文件应该避免这种潜在的麻烦.


小智 3

做什么呢ruby script/destroy model?这应该处理模型和迁移。

  • 是的,所以所有这一切的最终答案是我可以使用 script/destroy,但我还需要手动编辑可能包含对这些已删除模型的引用的任何迁移。非常感谢 (2认同)