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

Sim*_*per 3 ruby-on-rails models polymorphic-associations rails-migrations destroy

我在项目开始时创建了一个注释模型,但现在我已经意识到我需要创建一些多态关系,所以我也可以使用其他一些模型的注释.考虑到我已经拥有的代码等,我认为我可能更容易从头开始,所以我可以以正确的方式为我的新多态世界构建所有视图/控制器等.

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

  1. 这会删除模型,迁移和实际的DB表吗?
  2. 当我想创建一个具有完全相同名称的新模型时会有什么影响?

cat*_*h22 13

要完全删除迁移已创建的所有列和表,您需要运行:

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
Run Code Online (Sandbox Code Playgroud)

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


Zai*_*ain 5

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

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

rake db:migrate:down VERSION=20100905201547
Run Code Online (Sandbox Code Playgroud)

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

然后运行

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

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

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

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