删除模型和 Table 以便可以在 Rails 中重新开始
Remove Model and Table so can start again in Rails
我在项目开始时创建了一个评论模型,但现在我意识到我需要创建一些多态关系,这样我也可以将评论与许多其他模型一起使用。考虑到我已经拥有的代码等,我认为从头开始重新开始可能更容易,这样我就可以以正确的方式为我的新多态世界构建所有 views/controllers 等。
我知道我可以 运行 rails destroy model comments
实现这个,但我有两个问题:
- 这会删除模型、迁移和实际数据库吗table?
- 如果我想创建一个名称完全相同的新模型,会有什么影响?
如果创建模型后已经迁移数据库:
首先,回滚对数据库的更改:
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
我在项目开始时创建了一个评论模型,但现在我意识到我需要创建一些多态关系,这样我也可以将评论与许多其他模型一起使用。考虑到我已经拥有的代码等,我认为从头开始重新开始可能更容易,这样我就可以以正确的方式为我的新多态世界构建所有 views/controllers 等。
我知道我可以 运行 rails destroy model comments
实现这个,但我有两个问题:
- 这会删除模型、迁移和实际数据库吗table?
- 如果我想创建一个名称完全相同的新模型,会有什么影响?
如果创建模型后已经迁移数据库:
首先,回滚对数据库的更改:
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