迁移后删除 rails 模型 [英] Remove rails model after migration

查看:29
本文介绍了迁移后删除 rails 模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对我来说似乎很奇怪,模型的创建、运行迁移、销毁它并再次创建相同的模型报告 SQL 异常:

It seems strange to me, that creation of model, running migration, destroying it, and creating again same model reports SQL exception:

project|master ⇒ rails g model name name
      invoke  active_record
      create    db/migrate/20130417185814_create_names.rb
      create    app/models/name.rb
project|master⚡ ⇒ rake db:migrate
==  CreateNames: migrating ====================================================
-- create_table(:names)
   -> 0.0020s
==  CreateNames: migrated (0.0021s) ===========================================
project|master⚡ ⇒ rails d model name
      invoke  active_record
      remove    db/migrate/20130417185814_create_names.rb
      remove    app/models/name.rb
project|master⚡ ⇒ rake db:migrate
project|master⚡ ⇒ rails g model name test
      invoke  active_record
      create    db/migrate/20130417185845_create_names.rb
      create    app/models/name.rb
project|master⚡ ⇒ rake db:migrate
==  CreateNames: migrating ====================================================
-- create_table(:names)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "names" already exists: CREATE TABLE "names" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "test" varchar(255), "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) /path/project/db/migrate/20130417185845_create_names.rb:3:in `change'
-- create_table("names", {:force=>true})
   -> 0.0100s
-- initialize_schema_migrations_table()
   -> 0.0025s
-- assume_migrated_upto_version(20130417185814, ["/path/project/db/migrate"])
   -> 0.0010s
You have 1 pending migrations:
  20130417185845 CreateNames
Run `rake db:migrate` to update your database then try again.

也许,我做错了什么?迁移有删除表的代码 - 是否只能用于回滚?

Maybe, I doing something wrong? Migration has code for deleting table - does it may be used only for rollback?

删除模型和数据库表并生成一个新表非常简单:

Delete model and database table and generate a new one is pretty easy:

  1. 创建模型:rails g 模型用户名
  2. 做迁移:rake db:migrate
  3. 实现一些东西,突然想起要删除模型
  4. 恢复特定迁移:rake db:migrate:down VERSION=20130417185814,其中20130417185814是迁移id(可以在rake db:migrate:status中看到)立>
  5. 移除模型:rails d model user
  6. 突然想起你需要这个模型,但还有其他领域
  7. 创建模型:rails g model user email group:references
  8. 成功迁移数据库:rake db:migrate
  1. Create model: rails g model user name
  2. Do migrations: rake db:migrate
  3. Implement something, suddenly remember that you need to delete model
  4. Revert specific migration: rake db:migrate:down VERSION=20130417185814, where 20130417185814 is migration id (can be seen in rake db:migrate:status)
  5. Remove model: rails d model user
  6. Suddenly remember that you need this model, but with other fields
  7. Create model: rails g model user email group:references
  8. Successfully migrate database: rake db:migrate

推荐答案

rails d model name 

这只会删除模型,而不是您运行的迁移(它在数据库中创建了表).

This just deletes the model and not the migration you have run (which created the table in the database).

如果要同时删除模型和表,则必须执行以下操作

If you want to delete both the model and the tables, you will have to do the following

rake db:rollback 
rails d model name

这篇关于迁移后删除 rails 模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆