铁轨毁坏脚手架留下后桌

 fhuwiop 发布于 2023-01-30 09:27

我使用命令创建了一个新的脚手架:

rails generate scaffold level

但后来我用命令摧毁了它

rails destroy scaffold level

然后再使用该命令将其添加回来

rails generate scaffold level question:string answer:string prev_q:integer next_q:integer

但是现在当我尝试rake db:migrate时,我收到以下错误

 SQLite3::SQLException: table "levels" already exists: CREATE TABLE "levels" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "question" varchar(255), "answer" varchar(255), "prev_q" integer, "next_q" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)

我的migrate/create_level.rb是

class CreateLevels < ActiveRecord::Migration
def change
  create_table :levels do |t|
  t.string :question
  t.string :answer
  t.integer :prev_q
  t.integer :next_q

  t.timestamps
  end
 end
end

但我的schema.rb是:

  create_table "levels", :force => true do |t|
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

我想知道如何更新架构中的级别表.另外我想知道为什么在我销毁脚手架时表不会被删除.我是否需要运行另一个命令才能执行此操作?

1 个回答
  • 使用destroy scaffold不会运行回滚到迁移.这样做的正确方法是

    rake db:rollback
    rails destroy scaffold level
    

    现在,由于您不再进行其他迁移,因此无法回滚.您需要手动删除该表:

    rails dbconsole
    DROP TABLE levels;
    

    2023-01-30 09:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有