ano*_*432 2 ruby schema ruby-on-rails scaffold ruby-on-rails-3
我使用命令创建了一个新的脚手架:
rails generate scaffold level
Run Code Online (Sandbox Code Playgroud)
但后来我用命令摧毁了它
rails destroy scaffold level
Run Code Online (Sandbox Code Playgroud)
然后再使用该命令将其添加回来
rails generate scaffold level question:string answer:string prev_q:integer next_q:integer
Run Code Online (Sandbox Code Playgroud)
但是现在当我尝试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)
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
但我的schema.rb是:
create_table "levels", :force => true do |t|
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
Run Code Online (Sandbox Code Playgroud)
我想知道如何更新架构中的级别表.另外我想知道为什么在我销毁脚手架时表不会被删除.我是否需要运行另一个命令才能执行此操作?
Ale*_*iri 10
使用destroy scaffold不会运行回滚到迁移.这样做的正确方法是
rake db:rollback
rails destroy scaffold level
Run Code Online (Sandbox Code Playgroud)
现在,由于您不再进行其他迁移,因此无法回滚.您需要手动删除该表:
rails dbconsole
DROP TABLE levels;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7803 次 |
| 最近记录: |