wake-up-neo.com

Wie kann man `Rails generate scaffold` ausführen, wenn das Modell bereits existiert?

Ich bin neu in Rails, also befindet sich mein aktuelles Projekt in einem seltsamen Zustand.

Eines der ersten Dinge, die ich generiert habe, war ein "Movie" -Modell. Ich fing dann an, es genauer zu definieren, fügte ein paar Methoden hinzu usw.

Mir ist jetzt klar, dass ich es mit Rails generate scaffold Hätte generieren sollen, um Dinge wie das Routing, Views, Controller usw. anzuschließen.

Ich habe versucht, das Gerüst zu generieren, habe jedoch die Fehlermeldung erhalten, dass bereits eine Migrationsdatei mit demselben Namen vorhanden ist.

Wie erstelle ich jetzt am besten ein Gerüst für meinen "Film"? (mit Rails 3)

322
Lan

TL; DR: Rails g scaffold_controller <name>

Auch wenn Sie bereits ein Modell haben, können Sie mit der Option Rails generate Die erforderlichen Controller- und Migrationsdateien generieren. Wenn Sie Rails generate -h Ausführen, werden alle verfügbaren Optionen angezeigt.

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

Wenn Sie ein Steuerungsgerüst für Ihr Modell erstellen möchten, lesen Sie scaffold_controller. Zur Verdeutlichung hier die Beschreibung dazu:

Löscht einen gerüsteten Controller und seine Ansichten. Übergeben Sie den Modellnamen, entweder CamelCased oder under_scored, und eine Liste von Ansichten als Argumente. Der Controller-Name wird als pluralisierte Version des Modellnamens abgerufen.

Um einen Controller innerhalb eines Moduls zu erstellen, geben Sie den Modellnamen als Pfad wie 'parent_module/controller_name' an.

Dies generiert eine Controller-Klasse in App/Controllern und ruft Helfer-, Template-Engine- und Test-Framework-Generatoren auf.

Um Ihre Ressource zu erstellen, würden Sie den Generator resource verwenden, und um eine Migration zu erstellen, können Sie auch den Generator migration anzeigen (siehe, all dieser Wahnsinn hat ein Muster). Diese bieten Optionen zum Erstellen der fehlenden Dateien zum Erstellen einer Ressource. Alternativ können Sie einfach Rails generate scaffold Mit der Option --skip Ausführen, um alle vorhandenen Dateien zu überspringen :)

Ich empfehle einige Zeit damit zu verbringen, die Optionen in den Generatoren zu betrachten. Sie sind etwas, von dem ich glaube, dass sie in Büchern und dergleichen nicht besonders gut dokumentiert sind, aber sie sind sehr praktisch.

578
Lee Jarvis

Tolle Antwort von Lee Jarvis, dies ist nur der Befehl, z. Wir haben bereits ein Modell namens User:

Rails g scaffold_controller User
63
tokhi

Für diejenigen, die eine Rails App mit vorhandener Datenbank starten, gibt es ein cooles Juwel namens schema_to_scaffold, um ein Gerüstskript zu generieren. es gibt aus:

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

von deiner schema.rb unser dein umbenanntes schema.rb.Überprüfen Sie es

29
frenesim

Dieser Befehl sollte den Trick machen:

$ Rails g scaffold movie --skip
12
Andrew Hendrie

Sie können scaffold_controller und denken Sie daran, das attributes des Modells zu übergeben. Andernfalls wird das Gerüst ohne die Attribute generiert.

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

Dieser Befehl generiert folgende Dateien:

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
8
Deepak Mahakale

In Rails 5 können Sie noch laufen

$Rails generate scaffold movie --skip

um alle fehlenden Gerüstdateien zu erstellen oder

Rails generate scaffold_controller Movie

um den Controller zu erstellen und nur anzuzeigen.

Zur besseren Erklärung lesen Sie Schienengerüst

8
Nesha Zoric