我有一堆Rails模型,现在想将它们重写为一个单一的模型,以简化我的代码并减少不必要的表格。
我想知道删除模型类和其表格的最佳方法是什么。我希望过去的迁移仍然能成功,但我不想留下空的模型。
我需要手动删除引用这些模型的旧迁移,然后再手动删除类文件吗?
请问有没有任何关于如何最好地实现此操作的提示?
我有一堆Rails模型,现在想将它们重写为一个单一的模型,以简化我的代码并减少不必要的表格。
我想知道删除模型类和其表格的最佳方法是什么。我希望过去的迁移仍然能成功,但我不想留下空的模型。
我需要手动删除引用这些模型的旧迁移,然后再手动删除类文件吗?
请问有没有任何关于如何最好地实现此操作的提示?
多合一解决方案。
运行以下命令:
rails destroy model ModelName
rails g migration DropTableModelName
前者将生成一个新的迁移文件,其应该看起来像这样:
class DropTableModelName < ActiveRecord::Migration
def change
drop_table :model_name
end
end
现在运行db:migrate
,然后你就完成了。如果您想完全摆脱一个模型及其表格,请执行以下操作:
rails destroy model Name
remove_table
的迁移,而是删除create
这个迁移。因此,该模型仍将存在于schema.rb
中... - Augustin Riedingerrails destroy scaffold <ModelName> -p
根据您所处的开发或生产阶段,您可能希望使用迁移将模型安全地移出以删除/备份数据等。然后,如bobbywilson0建议的那样,使用
script/destroy model
如果你使用rspec进行测试
script/destroy rspec_model
你可以试试运行ruby script/destroy model
命令,这会删除掉对应的模型和数据库迁移文件。
script/destory migration migration_name
。一个好的方法来思考它,是生成命令的撤销。因此,它也不会搜索修改同一模型的其他迁移。 - bobbywilson0```
rake db:migrate:status
如果你对自己的命名方案有信心,可以随意使用grep -i
。
注意所有“将x添加到模型名称”和类似修改您的模型。这些可以使用以下方法删除:
rails d migration AddXToModelName
对于除了初始创建迁移之外的每个迁移都要这样做。以下命令将处理初始创建迁移和与模型相关联的文件:
rails d model ModelName
git checkout
(或类似方法)来恢复db/migrate/20181106030807_create_model_names.rb
文件,对吧? - Satoshi Suzuki