2016-08-02 11 views
7

Ich möchte eine Tabelle in meinem Schema löschen. Ich habe die Datenbank beim ersten Start des Projekts erstellt und möchte die Tabelle entfernen. Was ist der beste Weg, dies zu tun?Tabelle aus Schema löschen - Rails

Ich versuchte rails g migration drop table :installs, aber das erstellt nur eine leere Migration?

Schema:

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

Mögliche Duplikate von [Rails DB Migration - Wie Sie eine Tabelle löschen?] (Http://stackoverflow.com/questions/4020131/rails-db-migration-how-to-drop-a-table) –

+0

I ' Ich sage, dass es sich nicht um ein Duplikat handelt, da es sich um eine Frage zum Schema handelt (auch wenn das nicht bearbeitet werden sollte). – jonlink

Antwort

21

Wenn Sie eine leere Migration erstellen, indem Sie:
rails g migration DropInstalls
oder:
rails generate migration DropInstalls

Sie können dies in fügen Sie dann das leere Migration:

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

laufen Dann rake db:migrate in der Befehlszeile, die die Installiert Tabelle

+1

Diese Antwort wäre vollständiger, wenn es darauf hinwies, dass das Schema eine automatisch generierte Datei ist und daher die falsche Sache ist, die man sich ansehen sollte. – jonlink

4

finde ich, dass es am einfachsten zu verwenden, um die Rails-Konsole bei der Lösung dieses Problems entfernen sollte. Angenommen, Sie möchten eine "Kommentartabelle" aus einer Bloganwendung entfernen. Sie können dies tun, indem Sie die folgenden Aufgaben über die Befehlszeile ausführen (z. B. Terminal).

Schritt eins:

$ rails console 

Schritt zwei:

$ ActiveRecord::Migration.drop_table(:comments) 

Schritt drei:

$ rake db:migrate 

Check Ihre schema.rb zu sehen, dass der Tisch entfernt wurde.

+4

Das ist gefährlich schlechter Rat. Wenn Sie dies manuell tun, kann Ihre Produktionsanwendung nicht wissen, dass die Tabelle gelöscht werden muss und dass Sie nicht mehr synchron sind, was zu vielen Problemen führen kann. Die richtige Antwort ist, eine Migration zu verwenden, um die Tabelle zu löschen. – brainbag