Usuwanie modelu w szynach (odwrotność „rails g model Title…”)

115
rails g model Rating user_id:integer message:string value:integer

Jak mogę całkowicie usunąć ten model? Dzięki

Colbern
źródło
5
Górna odpowiedź Michaiła poniżej dotyczy modelu utworzonego podczas ostatniej migracji. Ci, którzy chcą usunąć model i jego tabelę, który był w pobliżu od jakiegoś czasu, ten wątek opisuje dokładnie, co należy zrobić.
Ninjakannon

Odpowiedzi:

192
bundle exec rake db:rollback    
rails destroy model <model_name>

Podczas generowania modelu tworzy migrację bazy danych. Jeśli uruchomisz polecenie „niszcz” w tym modelu, usunie on plik migracji, ale nie tabelę bazy danych. Więc przed biegiem

bundle exec rake db:rollback
Michaił Nikalyukin
źródło
:( Przeczytaj pierwszą linijkę i zrób to. To była moja wina, ale poprawnie uporządkowana odpowiedź mogła pomóc.
Mike T
4
jeśli to rozwój i nie boisz się stracić danych, możesz uruchomić bundle exec rake db:drop db:create db:migrate. Będzie to nowa, pusta baza danych.
Mikhail Nikalyukin
Dziękuję. Przywróciłem migrację z Kosza, ale okazuje się, że miałem też kolejną brakującą migrację, więc zrobię to, co sugerujesz
Mike T
6
@MikeT Co? Przywróciłeś migrację z kosza? Nie korzystasz z VCS? o_O Absolutnie powinieneś!
plunntic iam
Pracowałem dla mnie, ale musiałem też wejść do route.rb i usunąć "devise_for: MODEL"
cormacncheese
54

Spróbuj tego

rails destroy model Rating

Usunie model, migrację, testy i osprzęt

fl00r
źródło
5
Usuwa wszystko, ale nie tworzy migracji na starszą wersję ani nic takiego.
pan
28

Dla przyszłych pytających: jeśli nie możesz usunąć tabel z konsoli, spróbuj utworzyć migrację, która porzuca tabele za Ciebie. Powinieneś utworzyć migrację, a następnie w tabelach notatek plików, które chcesz usunąć w następujący sposób:

class DropTables < ActiveRecord::Migration
  def up
    drop_table :table_you_dont_want
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end
Jenny Lang
źródło
Świetna odpowiedź, będzie zachowywać się zgodnie z oczekiwaniami z rozmieszczeniem capistrano.
LessQuesar
18
  1. Aby usunąć migrację (jeśli migracja została już przeprowadzona)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. Aby usunąć Model

    rails d model name  #name => Your model name
Govind Shaw
źródło
rails d modeljest tym, czego szukam, aby odwrócić mój rails g model.
Komsun K.
3

Oto inna implementacja odpowiedzi Jenny Lang, która działa w Railsach 5.

Najpierw utwórz plik migracji:

bundle exec be rails g migration DropEpisodes

Następnie wypełnij plik migracji w następujący sposób:

class DropEpisodes < ActiveRecord::Migration[5.1]
  def change
    drop_table :episodes
  end
end

Uruchomienie rails db:migratespowoduje upuszczenie stołu. Jeśli uruchomisz rails db:rollback, Railsy zgłoszą ActiveRecord::IrreversibleMigrationbłąd.

Uprawnienie
źródło
To przydatna odpowiedź - ale polecenie nie działa dla mnie. Użyłem: bundle exec rails generuje migrację DropEpisodes A następnie użyłbym również poniższego kodu usuwania modelu.
Andrew Spode