如何将数据库重置回rails中的初始状态?

时间:2015-01-18 21:32:07

标签: ruby-on-rails ruby migration schema auto-generate

我目前正在开展一项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

3 个答案:

答案 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