删除模型和 Table 以便可以在 Rails 中重新开始

Remove Model and Table so can start again in Rails

我在项目开始时创建了一个评论模型,但现在我意识到我需要创建一些多态关系,这样我也可以将评论与许多其他模型一起使用。考虑到我已经拥有的代码等,我认为从头开始重新开始可能更容易,这样我就可以以正确的方式为我的新多态世界构建所有 views/controllers 等。

我知道我可以 运行 rails destroy model comments 实现这个,但我有两个问题:

  1. 这会删除模型、迁移和实际数据库吗table?
  2. 如果我想创建一个名称完全相同的新模型,会有什么影响?

如果创建模型后已经迁移数据库:

首先,回滚对数据库的更改:

rake db:migrate:down VERSION=20100905201547

其中 version 是标识迁移的时间戳。例如,如果您的迁移文件名为 20170411182948_create_comments.rb,那么您的版本参数应为 20170411182948

然后运行

rails destroy model comments

第一个命令将从实际数据库中删除 table。第二条命令将删除模型和迁移文件。确保你 运行 按顺序排列它们,因为第一个命令依赖于迁移文件来执行回滚(在第二个命令期间被删除)。

如果您还没有迁移数据库:

table 不会被添加到您的数据库中。您可以继续手动删除模型和迁移文件,或使用 destroy 命令。

为了完全删除所有列 & 迁移创建的表你需要 运行:

rails db:migrate:down VERSION=012345678(其中 012345678 应该是您迁移的版本号)

............................

rails destroy model Comments

将删除您的模型、待定迁移、测试和固定装置

所以销毁它与生成相反:

$ bin/rails destroy model Oops
      invoke  active_record
      remove    db/migrate/20120528062523_create_oops.rb
      remove    app/models/oops.rb
      invoke    test_unit
      remove      test/models/oops_test.rb
      remove      test/fixtures/oops.yml

而且,您现在可以创建一个同名的新模型,因为没有您之前的模型的踪迹:)

您可能需要彻底删除 table。
运行 这个 :

sqlite3 db/development.sqlite3 

然后:

sqlite> drop table table_name;
sqlite> .quit