【问题标题】:rails destroy scaffold leaves back table铁轨 破坏 脚手架 叶子 后桌
【发布时间】:2014-02-24 14:31:15
【问题描述】:

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

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

我想知道如何更新架构中的级别表。另外我想知道为什么我销毁脚手架时表没有被删除。我需要运行另一个命令吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 schema scaffold


    【解决方案1】:

    我必须做的是:

    首先我按照@Alex Siri 指定的步骤进行操作。

    但是在这样做之后使用

    rake db:migrate
    

    没有在表中添加值问题、答案等,所以我做了以下步骤

    1. 我再次使用命令删除了脚手架

      rails destroy scaffold level

    2. 之后我再次使用命令创建了脚手架:

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

    3. 最后我使用

      进行了迁移

      rake db:migrate

    这解决了我的问题。我编写了所有步骤,以便如果其他人有同样的问题,他们可以轻松解决。

    【讨论】:

      【解决方案2】:

      使用destroy scaffold 不会运行回滚到迁移。正确的做法是

      rake db:rollback
      rails destroy scaffold level
      

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

      rails dbconsole
      DROP TABLE levels;
      

      【讨论】:

      • 所以在删除表格后我应该手动添加表格中的所有内容还是只运行rake db:migrate
      • 运行rake db:migrate
      猜你喜欢
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 2012-04-07
      相关资源
      最近更新 更多