从架构中删除表 - Rails

时间:2016-08-02 03:07:03

标签: ruby-on-rails ruby rails-migrations

我想删除架构中的表。我在第一次启动项目时创建了数据库,并希望删除表。这样做的最佳方式是什么?

我尝试了rails g migration drop table :installs,但这只会创建一个空迁移?

架构:

create_table "installs", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip"
    t.string   "last_sign_in_ip"
    t.datetime "created_at",                          null: false
    t.datetime "updated_at",                          null: false
  end

add_index "installs", ["email"], name: "index_installs_on_email", unique: true
add_index "installs", ["reset_password_token"], name: "index_installs_on_reset_password_token", unique: true

2 个答案:

答案 0 :(得分:36)

如果您通过运行创建空迁移:
rails g migration DropInstalls
或:
rails generate migration DropInstalls

然后,您可以将其添加到空迁移中:

class DropInstalls < ActiveRecord::Migration
  def change
    drop_table :installs
  end
end

然后在命令行中运行rake db:migrate,该命令行将删除Installs表

答案 1 :(得分:4)

我发现使用 Rails控制台解决此问题最为容易。假设您要删除评论&#39;来自博客应用程序的表。您可以通过从命令行执行以下任务来完成此操作(例如,终端)。

第一步:

$ rails console 

第二步:

$ ActiveRecord::Migration.drop_table(:comments)

第三步:

$ rake db:migrate

请检查您的schema.rb以查看该表格已被删除。