Jak uruchomić "rails generate scaffold", gdy model już istnieje?

Jestem nowy w Rails, więc mój obecny projekt jest w dziwnym stanie.

Jedną z pierwszych rzeczy, które wygenerowałem, był model "Filmowy". Potem zacząłem je definiować bardziej szczegółowo, dodałem kilka metod itp.

Zdałem sobie sprawę, że powinienem wygenerować go za pomocą rails generate scaffold, aby podłączyć rzeczy takie jak routing, widoki, kontroler itp.

Próbowałem wygenerować rusztowanie, ale dostałem błąd mówiący, że plik migracji o tej samej nazwie już istnieje.

Jaki jest najlepszy sposób na stworzyć rusztowanie do mojego "filmu" teraz? (using rails 3)

Author: peak, 2010-12-02

6 answers

TL; DR: rails g scaffold_controller <name>

Mimo, że masz już model, nadal możesz wygenerować niezbędne pliki kontrolera i migracji za pomocą opcji rails generate. Jeśli uruchomisz rails generate -h, zobaczysz wszystkie dostępne opcje.

Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets

Jeśli chcesz wygenerować rusztowanie sterownika dla swojego modelu, Zobacz scaffold_controller. Dla jasności, oto opis na ten temat:

[[9]}Stubs out a scaffolded controller and its views. Podaj nazwę modelu, albo CamelCased lub under_scored oraz lista widoków jako argumenty. Nazwa kontrolera jest pobierana jako wielowątkowa wersja modelu nazwisko.

Aby utworzyć kontroler w module, podaj nazwę modelu jako ścieżka jak 'parent_module/controller_name'.

Generuje klasę kontrolera w app / controllers i wywołuje helpera, silnik szablonów i generatory RAM testowych.

Aby stworzyć swój zasób, użyjesz resource generator, a aby utworzyć migrację, możesz również zobaczyć generator migration (Zobacz, jest wzorzec tego całego szaleństwa). Zapewniają one Opcje tworzenia brakujących plików w celu zbudowania zasobu. Alternatywnie możesz po prostu uruchomić {[7] } z opcją --skip, aby pominąć wszystkie istniejące pliki:)

Zalecam spędzenie trochę czasu patrząc na opcje wewnątrz generatorów. Nie wydaje mi się, że są dobrze udokumentowane w książkach, ale są bardzo przydatne.

 555
Author: Lee Jarvis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-14 09:49:27

Świetna odpowiedź przez Lee Jarvis, to tylko polecenie np; mamy już istniejący model o nazwie User:

rails g scaffold_controller User
 61
Author: tokhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-02 19:42:35

Dla tych, którzy zaczynają aplikację rails z istniejącą bazą danych istnieje fajny gem o nazwie schema_to_scaffold do wygenerowania skryptu scaffold. wyjście:

rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

From your schema.rb our your schema.rb. sprawdź to

 28
Author: frenesim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 08:10:38

To polecenie powinno zadziałać:

$ rails g scaffold movie --skip
 12
Author: Andrew Hendrie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-10 08:21:14

Możesz użyć scaffold_controller i pamiętaj, aby przekazać attributes modelu, lub rusztowanie zostanie wygenerowane bez atrybutów.

rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string

To polecenie wygeneruje następujące pliki:

create  app/controllers/users_controller.rb
invoke  haml
create    app/views/users
create    app/views/users/index.html.haml
create    app/views/users/edit.html.haml
create    app/views/users/show.html.haml
create    app/views/users/new.html.haml
create    app/views/users/_form.html.haml
invoke  test_unit
create    test/controllers/users_controller_test.rb
invoke  helper
create    app/helpers/users_helper.rb
invoke    test_unit
invoke  jbuilder
create    app/views/users/index.json.jbuilder
create    app/views/users/show.json.jbuilder
 7
Author: Deepak Mahakale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-20 12:46:00

In Rails 5 , you can still run

$rails generate scaffold movie --skip

Aby utworzyć wszystkie brakujące pliki rusztowań lub

rails generate scaffold_controller Movie

Aby utworzyć kontroler i tylko widok.

Dla lepszego wyjaśnienia sprawdź rusztowania szynowe

 3
Author: Nesha Zoric,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-22 10:55:12