rails通过迁移删除旧模型
我有一堆rails模型,我正在重写为单个模型,以简化我的代码并减少不必要的表。
我想知道删除模型类及其表的最佳方法是什么。 我希望过去的迁移仍能成功,但我不想让空模型四处闲置。 我是否必须手动删除引用这些模型的旧迁移,然后手动删除类文件?
有没有人有最好的方法来做到这一点?
做ruby script/destroy model
怎么样? 这应该照顾模型和迁移。
如果您想完全摆脱模型,其表格执行此操作:
rails destroy model Name
一体化解决方案。
运行以下命令:
rails destroy model ModelName rails g migration DropTableModelName
前者将生成一个新的迁移文件,如下所示:
class DropTableModelName < ActiveRecord::Migration def change drop_table :model_name end end
现在运行db:migrate
,你就完成了。
问题现在有点陈旧,但我刚才做了:
rails destroy scaffold -p
-p标志显示“假装”输出,这有助于查看将要发生的事情。 删除’-p’标志,结果将与输出匹配。 这清理了整个MVC文件集合+测试+ js文件+原始迁移,没问题。
我想如果你是一个喜欢手动编辑你的迁移并在每个中包含多个步骤的人,那么丢失原始迁移可能会破坏db:setup,所以买家要小心。 保持一个动作==一个迁移文件应该避免这种潜在的麻烦。
你可以在rails guide上看一下这个。 但我建议,如果可能的话,你应该删除模型和模型的所有引用。 这可能会节省时间,因为您不需要在代码库中维护死代码。
根据您的开发或生产的进度,您可能希望使用迁移来移除/备份数据或不安全地迁移模型。 然后作为bobbywilson0建议,使用
script/destroy model
或者如果你有任何想法
script/destroy rspec_model
这也将删除任何规范测试。
或者您可以随时将它们拖到垃圾箱文件夹中。
如果你想要一个基于手册的答案:
首先运行以下命令以确定要删除的迁移:
rake db:migrate:status
如果您对自己的命名方案充满信心,也可以随意使用grep -i
。
记下所有“添加x到模型名称”以及对模型的类似更改。 这些可以使用以下方法删除
rails d migration AddXToModelName
除了初始创建迁移之外,为每次迁移执行此操作。 以下命令将处理初始创建迁移以及与模型关联的文件:
rails d model ModelName