我目前正在开展一项ROR项目。我为Notes生成了脚手架并为其运行迁移。但是现在我们对计划进行了一些改动,我希望将应用程序恢复到初始状态。所以我运行rails scaffold destroy notes,所以我生成的所有文件都被删除了。但我仍然有文件schema.rb,并定义了Notes表迁移。如何在不手动更改此文件的情况下摆脱它(这被认为是不好的做法)?如果我生成Notes模型并运行迁移,这个文件将更新,一切都会好吗?或者可能存在冲突? 我试图运行rake db:reset。它似乎没有奏效。但是在这个过程的最后我得到了这个消息。
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"thenotesapp", "pool"=>5, "username"=>"thenotesapp", "password"=>"thenotesapp"}
-- enable_extension("plpgsql") -> 0.0367s
-- create_table("notes", {:force=>:cascade}) -> 0.0628s
-- initialize_schema_migrations_table() -> 0.0276s
-- enable_extension("plpgsql") -> 0.0251s
-- create_table("notes", {:force=>:cascade}) -> 0.0157s
-- initialize_schema_migrations_table() -> 0.0012s
schema.rb仍然像这个脚手架被破坏了
ActiveRecord::Schema.define(version: 20150114071920) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "notes", force: :cascade do |t|
t.string "title"
t.text "text"
t.datetime "created_at"
t.datetime "updated_at"
end
end
答案 0 :(得分:2)
要删除数据库,您必须首先设置它,正如您所说的初始状态 - 这样做运行:
rake db:migrate VERSION=0
下一步是手动删除所有迁移文件(/db/migrate
目录)。
就是这样 - 你有干净的schema.rb
不包含任何表格。
答案 1 :(得分:1)
首先删除数据库:
rake db:drop
然后创建db:
rake db:create
之后迁移表:
rake db:migrate
如果要填充数据库,则:
rake db:seed
答案 2 :(得分:0)
rake db:drop db:create db:migrate db:seed