2016-08-08 10 views
7

Wie lautet der Befehl zum Entfernen einer vorhandenen Spalte aus einer Tabelle mithilfe der Migration?Schienen 5: Wie man eine Spalte von einer Datenbank entfernt?

Die Säule I entfernen will, ist: country:string

Aus der Tabelle: sample_apps

+1

Hallo und willkommen Überlauf Stack! Ich sehe deine Frage hat bereits Antworten, aber ich dachte, ich sollte dich wissen lassen, dass einer der besten Plätze, um ein gutes Grundverständnis von Schienen zu bekommen, die offiziellen Schienen-Führer sind: http://edgeguides.rubyonrails.org - sie sind überraschend lesbar und wird Ihnen helfen, Ihre grundlegende Rails Verständnis super schnell aufzustufen. Der eine speziell auf Migrationen ist dieser: http://edgeguides.rubyonrails.org/active_record_migration.html, aber ich empfehle auch, sie alle von Anfang an zu lesen. :) –

Antwort

29

Um eine Spalte mit der Migration zu entfernen:

rails g migration Remove..From.. col1:type col2:type col3:type 

In Ihrem Fall:

rails g migration RemoveCountryFromSampleApps country:string 

Dies erzeugt die folgende Migration in Rails 5.0:

class RemoveCountryFromSampleApps < ActiveRecord::Migration[5.0] 
    def change 
    remove_column :sample_apps, :country, :string 
    end 
end 
+4

muss ich 'rails db: migrate' danach ausführen? – boholdyjeramae

+1

Ja, Sie müssen die db migrieren – davideghz

+0

Nur noch 1 Klärung. Da der Modellname SampleApp singulär ist und der Tabellenname sample_apps Plural ist, welche verwende ich? Die 'RemoveCountryFromSampleApp' oder die 'RemoveCountryFromSampleApps' – boholdyjeramae

1

Migrationsdatei erstellen:

$ rails generate migration RemoveCountryFromSampleApps country:string 

In erzeugten Migrationsdatei:

class RemoveCountryFromSampleApps < ActiveRecord::Migration 
def change 
    remove_column :sample_apps, :country, :string 
end 
end 

Dann laufen:

rake db:migrate 
+1

In Rails 5 werden keine 'Rake' vs' Rails' mehr aufgerufen. Benutze einfach 'rails', immer. –

0

Wenn Sie wollen, zu r eMove auch den Index, sind Sie mit der Migration zu:

rails g migration remove_post_id_from_comments post_id:integer:index 

Migrationsdatei:

class RemovePostIdFromComments < ActiveRecord::Migration 
    def change 
    remove_index :comments, :post_id 
    remove_column :comments, :post_id, :integer 
    end 
end 

dann laufen: rake db:migrate

Verwandte Themen