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)
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.
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
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
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
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
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
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