Jak odwrócić „generowanie szyn”


471

Chcę usunąć wszystkie utworzone przez siebie pliki i przywrócić wprowadzone zmiany, ale niekoniecznie do bazy danych, ale bardziej do plików konfiguracyjnych.

Chciałbym automatycznie usunąć wszystkie mapowania zasobów dla modelu / kontrolera usuniętego w pliku route.rb i wszędzie tam, gdzie mogły zostać wprowadzone zmiany?

Odpowiedzi:


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

Rails 3.2 dodaje nowy dskrót do polecenia, dzięki czemu możesz teraz pisać:

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

1
Przy okazji, jak użyć tego polecenia, aby usunąć rusztowanie? Model i kontroler działają dobrze ... ale jak całkowicie odwrócić rusztowanie?
marcamillion

6
Ok, rozgryzłem to. Być może coś źle wpisałem. Właśnie pobiegłem rails destroy scaffold lalalali to zadziałało.
marcamillion,

38
@marcamillion Musi być dodatkowym „L”.
varatis

1
A co z usuwaniem plików związanych z instalacją klejnotów, takich jakrails generate <gemname>:install
doug

2
@doug, nie sądzę, że to możliwe. Najlepszym rozwiązaniem jest ponowne uruchomienie generatora z -fflagą, aby zmusić go do odtworzenia / ponownej edycji plików… Następnie możesz zobaczyć, które pliki utworzył / zmienił i kontynuować ręczne usuwanie ich.
Fábio Batista

49

Warto tu wspomnieć o -pfladze („p” dla udawania ).

Jeśli dodasz to do polecenia, po prostu wykona „test” i pokaże, jakie pliki zostaną usunięte bez ich usuwania.

$ 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

Jeśli jesteś zadowolony, uruchom komendę ponownie bez -pflagi.


Myślę, że to najlepsza odpowiedź
Emil Reña Enriquez,

24

rails destroy controller Controller_namezwracał wiele błędów. Aby móc zniszczyć kontroler, musiałem usunąć powiązane trasy w route.rb. PS Używam szyn 3.1


Nie streszczaj swoich działań, chyba że zamierzasz wybrać tę odpowiedź jako prawidłową.
Tin Man

11

Jest to prototyp generujący lub niszczący kontroler lub model w Railsach:

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

Na przykład, jeśli chcesz wygenerować kontroler użytkownika:

rails generate controller User

lub

rails g controller User

Jeśli chcesz zniszczyć kontroler użytkownika lub przywrócić powyższą akcję, użyj:

rails destroy controller User

lub:

rails d controller User

wprowadź opis zdjęcia tutaj


4

Możesz użyć rails d model/controller/migration ...do zniszczenia lub usunięcia zmian wygenerowanych za pomocą rails generatepolecenia.

Na przykład:

rails g model Home name:string

tworzy model o nazwie homez atrybutem name. Aby usunąć pliki i kod wygenerowany z tego polecenia, możemy użyć

rails d model Home

3

Możesz zniszczyć wszystkie rzeczy, które zostały stworzone w ten sam sposób, z wyjątkiem drobnych zmian. Dla kontrolera

rails d controller_name (d stands for destroy)

Do modelu

rails d model_name

po prostu umieściłeś d(destroy)zamiast g(generate)w migracji.


3

Jeśli wolisz ręcznie usunąć kontroler:

Dla kontrolera 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

Możesz cofnąć swoje

rails g/generate controller/model/migration xxx

dane wyjściowe przy użyciu:

 rails d/destroy controller/model/migration xxx

3

Załóżmy, że utworzyłem kontroler o nazwie „sample”, taki jak:

rails generate controller sample

Jeśli będę musiał zniszczyć ten kontroler, wszystko co musisz zrobić, to zamiana generatez destroy, jak w

rails destroy controller sample.

Jeśli chcesz, aby odwrócić pokolenie, wszystko co musisz zrobić, to zamiana generatez destroy.


3

Jeśli używasz Railsów, użyj rails d controller Users.

A jeśli używasz Zeusa, użyj zeus d controller Users.

Z drugiej strony, jeśli używasz git lub SVN, przywróć zmiany za pomocą numeru zatwierdzenia. To jest znacznie szybsze.


3

Możesz cofnąć a rails generatena następujące sposoby:

  • Dla modelu: rails destroy MODEL
  • Dla kontrolera: rails destroy controller_name

1

Aby to odwrócić, po prostu to niszczymy. Otwórz aplikację Terminal i przejdź do katalogu projektu, a następnie wpisz:

rails destroy model CamelCase
rails destroy controller CamelCase

Gdzie CamelCasejest nazwa dowolnego modelu lub kontrolera. Spowoduje to usunięcie modelu, migracji i niektórych powiązanych plików testowych. (Możesz zobaczyć wynik w oknie terminala po uruchomieniu polecenia.)


0

Używamy generować jako rails generate app. Tak więc generateponowne generowanie dowolnej instrukcji można odwrócić za pomocą destroyinstrukcji. Wystarczy wymienić generatez destroy IE rails generate appmożna zapisać jako rails destroy app' szyny generować ____ asszyny zniszczyć ____ `


0

Usunięto rusztowanie dla wybranego modelu:

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

0

Przed cofnięciemrails generate upewnij się, że najpierw przywrócisz migrację .

Przypadek 1: jeśli chcesz cofnąć rusztowanie, uruchom następującą komendę:

rails destroy scaffold MODEL_NAME

Przypadek 2: jeśli chcesz przywrócić model, uruchom następującą komendę:

rails destroy model MODEL_NAME

Przypadek 3: jeśli chcesz przywrócić kontroler, uruchom następującą komendę:

rails destroy controller CONTROLLER_NAME

Uwaga: możesz także użyć skrótu dzamiast destroy.



0

Wszystkie wersje szyn mają „zniszczyć”, dlatego jeśli utworzysz (na przykład) rusztowanie o nazwie „zadania” za pomocą generatora, aby zniszczyć wszystkie zmiany tego kroku generowania, musisz wpisać:

rails destroy scaffold Tasks

Mam nadzieję, że to ci pomoże.

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.