Bit*_*ise 13 ruby ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)
Luk*_*err 40
如果通过运行:或:创建空迁移
rails g migration DropInstalls
:
rails generate migration DropInstalls
然后,您可以将其添加到该空迁移中:
class DropInstalls < ActiveRecord::Migration
def change
drop_table :installs
end
end
Run Code Online (Sandbox Code Playgroud)
然后rake db:migrate
在命令行中运行,该命令行应删除Installs表
我发现使用Rails控制台解决这个问题最简单.假设您要从博客应用程序中删除"评论"表.您可以通过从命令行执行以下任务(例如,终端)来执行此操作.
第一步:
$ rails console
Run Code Online (Sandbox Code Playgroud)
第二步:
$ ActiveRecord::Migration.drop_table(:comments)
Run Code Online (Sandbox Code Playgroud)
第三步:
$ rake db:migrate
Run Code Online (Sandbox Code Playgroud)
去检查一下schema.rb
,看看桌子已被删除.