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

How reset database back to initial state in rails?

我目前正在做一个 ROR 项目。我已经为 Notes 生成了脚手架并为它生成了 运行 迁移。但是现在我们对计划进行了一些更改,我想让应用程序恢复到初始状态。所以我 运行 rails scaffold destroy notes 所以我删除了所有生成的文件。但是我仍然有文件 schema.rb,其中定义了 Notes table 迁移。如何在不手动更改此文件的情况下摆脱它(这被认为是不好的做法)?如果我生成 Notes 模型和 运行 迁移,这个文件是否会更新,一切都会好起来的?或者可能会有冲突? 我试图 运行 耙 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

要删除数据库,您必须首先设置它,正如您对 初始状态 所说的那样 - 为此 运行:

rake db:migrate VERSION=0

下一步是手动删除所有迁移文件(/db/migrate 目录)。

就是这样 - 您的 schema.rb 没有任何表格。

rake db:drop db:create db:migrate db:seed

首先删除数据库:

rake db:drop

然后创建数据库:

rake db:create

之后迁移表:

rake db:migrate

如果要填充数据库,则:

rake db:seed