Rimozione di un modello in rails (inverso di "rails g model Title ...")


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

Come posso rimuovere completamente questo modello? Grazie


5
La risposta principale di Mikhail di seguito si applica a un modello creato nell'ultima migrazione. Coloro che vogliono rimuovere un modello e il suo tavolo che sono in circolazione da un po ', questo thread descrive esattamente cosa fare.
Ninjakannon

Risposte:


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

Quando si genera un modello, viene creata una migrazione del database. Se esegui "distruggi" su quel modello, eliminerà il file di migrazione, ma non la tabella del database. Quindi prima di correre

bundle exec rake db:rollback

:( Leggi la prima riga e l'ho fatto. È stata colpa mia, ma una risposta ordinata correttamente potrebbe aver aiutato.
Mike T

4
se è sviluppo e non hai paura di perdere i tuoi dati puoi correre bundle exec rake db:drop db:create db:migrate. Sarà un nuovo database vuoto.
Mikhail Nikalyukin

Grazie. Ho ripristinato la migrazione dal Cestino ma si è scoperto che avevo anche un'altra migrazione mancante, quindi farò quello che suggerisci
Mike T

6
@MikeT Tu cosa? Hai ripristinato la migrazione dal cestino? Non usi alcun VCS? o_O Dovresti assolutamente!
plunntic iam

Ha funzionato per me, ma ho anche dovuto andare in routes.rb e cancellare "devise_for: MODEL"
cormacncheese

54

Prova questo

rails destroy model Rating

Rimuoverà modello, migrazione, test e dispositivi


5
Rimuove tutto, ma non crea migrazioni di downgrade o qualcosa del genere.
Sig. Il

28

Per futuri interlocutori: se non riesci a eliminare le tabelle dalla console, prova a creare una migrazione che elimini le tabelle per te. È necessario creare una migrazione e quindi nelle tabelle delle note del file che si desidera rilasciare in questo modo:

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

Ottima risposta, si comporterà come previsto con un capistrano schierato.
LessQuesar

18
  1. Per rimuovere la migrazione (se hai già migrato la migrazione)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. Per rimuovere Model

    rails d model name  #name => Your model name

rails d modelè quello che cerco per invertire il mio rails g model.
Komsun K.

3

Ecco un'implementazione diversa della risposta di Jenny Lang che funziona per Rails 5.

Per prima cosa crea il file di migrazione:

bundle exec be rails g migration DropEpisodes

Quindi popolare il file di migrazione come segue:

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

La corsa rails db:migratefarà cadere il tavolo. Se corri rails db:rollback, Rails genererà un ActiveRecord::IrreversibleMigrationerrore.


Questa è una risposta utile, ma il comando non funziona per me. Ho usato: bundle exec rails generano DropEpisodes di migrazione E quindi userei anche il codice di eliminazione del modello di seguito.
Andrew Spode
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.