2016-08-08 12 views
7

Co to jest polecenie usuwania istniejącej kolumny z tabeli przy użyciu migracji?Szyny 5: Jak usunąć kolumnę z bazy danych?

Kolumna chcę usunąć to: country:string

Z tabeli: sample_apps

+1

Witam i zapraszam do przepełnienia stosu! Widzę, że twoje pytanie już zawiera odpowiedzi, ale pomyślałem, że powinienem dać ci znać, że jednym z najlepszych miejsc do dobrego zrozumienia szyn są oficjalne przewodniki Rails: http://edgeguides.rubyonrails.org - są one zaskakująco czytelny i pomoże Ci szybko uzyskać podstawowe zrozumienie Railsów. Ten specjalnie ukierunkowany na migracje jest następujący: http://edgeguides.rubyonrails.org/active_record_migrations.html, ale zalecam również przeczytanie ich wszystkich od samego początku. :) –

Odpowiedz

29

Aby usunąć kolumnę z migracją:

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

W twoim przypadku:

rails g migration RemoveCountryFromSampleApps country:string 

Spowoduje to wygenerowanie następującej migracji w Rails 5.0:

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

Czy po tym muszę uruchomić 'rails db: migrate'? – boholdyjeramae

+1

tak, musisz przeprowadzić migrację db – davideghz

+0

Jeszcze jedno wyjaśnienie. Ponieważ nazwa modelu SampleApp jest liczbą pojedynczą, a nazwa tabeli sample_apps jest liczbą mnogą, z której mam korzystać? Liczba mnoga 'RemoveCountryFromSampleApp' lub' RemoveCountryFromSampleApps' – boholdyjeramae

1

Tworzenie pliku migracji:

$ rails generate migration RemoveCountryFromSampleApps country:string 

W wygenerowanym pliku migracji:

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

Następnie uruchom:

rake db:migrate 
+1

W Railsach 5 nie ma więcej połączeń "rake" i "rails". Po prostu używaj 'szyn", zawsze. –

0

Jeśli Kupię R suĹ indeks też zrobić z migracją też: plik

rails g migration remove_post_id_from_comments post_id:integer:index 

migracji:

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

następnie uruchomić: rake db:migrate

Powiązane problemy