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


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

:( 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


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

Ś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

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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.