Come invertire un 'generare rotaie'


471

Voglio eliminare tutti i file che ha creato e ripristinare tutte le modifiche apportate, ma non necessariamente al database, ma più ai file di configurazione.

Vorrei eliminare automaticamente tutti i mapping delle risorse per il modello / controller eliminati nel file route.rb e in qualsiasi altro luogo in cui potrebbero essere state apportate modifiche?

Risposte:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2 aggiunge un nuovo dcollegamento al comando, quindi ora puoi scrivere:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
A proposito, come posso usare questo comando per cancellare uno scaffold? Il modello e il controller funzionano bene ... ma come posso invertire completamente uno scaffold?
marcamillion,

6
Ok, l'ho capito. Forse stavo digitando male qualcosa. Ho appena corso rails destroy scaffold lalalale ha funzionato.
marcamillion,

38
@marcamillion Dev'essere stata quella "L" in più.
varatis,

1
Che ne dici di rimuovere i file associati a un'installazione gemma comerails generate <gemname>:install
Doug

2
@doug, non credo sia possibile. La tua scommessa migliore è semplicemente rieseguire il generatore con il -fflag per forzarlo a ricreare / modificare nuovamente i file ... Quindi puoi vedere quali file ha creato / modificato e procedere manualmente alla loro eliminazione.
Fábio Batista,

49

Vale la pena menzionare la -pbandiera qui ("p" per finta ).

Se aggiungi questo comando al comando, eseguirà semplicemente un "test" e ti mostrerà quali file verranno eliminati senza eliminarli.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

Se sei soddisfatto, esegui di nuovo il comando senza la -pbandiera.


Penso che questa sia la risposta migliore
Emil Reña Enriquez,

24

rails destroy controller Controller_namestava restituendo un sacco di errori. Per poter distruggere il controller ho dovuto rimuovere i percorsi correlati in route.rb. PS sto usando le rotaie 3.1


Ti preghiamo di non riassumere le tue azioni a meno che tu non intenda che questa risposta sia la risposta corretta selezionata.
Tin Man, il

11

Questo è un prototipo per generare o distruggere un controller o un modello in Rails:

rails generate/destroy controller/model [controller/model Name]

Ad esempio, se è necessario generare un controller utente:

rails generate controller User

o

rails g controller User

Se si desidera distruggere il controller utente o ripristinare l'azione precedente, utilizzare:

rails destroy controller User

o:

rails d controller User

inserisci qui la descrizione dell'immagine


4

È possibile utilizzare rails d model/controller/migration ...per distruggere o rimuovere le modifiche generate utilizzando il rails generatecomando.

Per esempio:

rails g model Home name:string

crea un modello denominato homecon attributo name. Per rimuovere i file e il codice generati da quel comando possiamo usare

rails d model Home

3

Puoi distruggere tutte le cose che sono state create allo stesso modo tranne che per un piccolo cambiamento. Per controller,

rails d controller_name (d stands for destroy)

Per modello

rails d model_name

hai appena inserito d(destroy)anziché g(generate)nella tua migrazione.


3

Se si preferisce eliminare manualmente il controller:

Per controller welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

3

Puoi ripristinare il tuo

rails g/generate controller/model/migration xxx

output utilizzando:

 rails d/destroy controller/model/migration xxx

3

Supponiamo di aver creato un controller chiamato "campione" come:

rails generate controller sample

Se devo distruggere questo controller, tutto quello che devo fare è di swap generatecon destroy, come in

rails destroy controller sample.

Se si vuole invertire la generazione, tutto ciò che dovete fare è di swap generatecon destroy.


3

Se usi Rails, usa rails d controller Users.

E, se usi Zeus, usa zeus d controller Users.

D'altra parte, se si utilizza git o SVN, ripristinare le modifiche con il numero di commit. Questo è molto più veloce.


3

Puoi annullare a rails generatenei seguenti modi:

  • Per il modello: rails destroy MODEL
  • Per il controller: rails destroy controller_name

1

Per invertire ciò, lo distruggiamo e basta. Apri l'applicazione Terminale e vai alla directory del progetto, quindi digita questo:

rails destroy model CamelCase
rails destroy controller CamelCase

Dov'è il CamelCasenome di qualsiasi modello o controller. Rimuoverà il modello, la migrazione e alcuni dei file di test correlati. (È possibile visualizzare il risultato nella finestra Terminale dopo aver eseguito il comando.)


0

Usiamo generate as rails generate app. Pertanto generate, è possibile invertire la rigenerazione di qualsiasi istruzione utilizzando l' destroyistruzione. Basta sostituire generatecon destroy ie rails generate apppuò essere scritto poiché le rails destroy app' rotaie generano ____ asrotaie distruggono ____ `


0

Ponteggi rimossi per il modello selezionato:

bin/rails d scaffold <AccessControl> //model name

0

Prima di ripristinare il rails generate, assicurarsi di eseguire prima il rollback della migrazione .

Caso 1: se si desidera ripristinare lo scaffold, eseguire questo comando:

rails destroy scaffold MODEL_NAME

Caso 2: se si desidera ripristinare il modello, eseguire questo comando:

rails destroy model MODEL_NAME

Caso 3: se si desidera ripristinare il controller, eseguire questo comando:

rails destroy controller CONTROLLER_NAME

Nota: è possibile utilizzare anche il collegamento danziché destroy.



0

Tutte le versioni di rotaie hanno un "distruggere", quindi, se si crea uno scaffold (ad esempio) denominato "attività" utilizzando un generatore, per distruggere tutte le modifiche di quel passaggio generato è necessario digitare:

rails destroy scaffold Tasks

Spero che ti aiuti.

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.