373 Stimmen

Geländer: Wie kann man `rails generate scaffold` ausführen, wenn das Modell bereits existiert?

Ich bin neu in Rails so mein aktuelles Projekt ist in einem seltsamen Zustand.

Eines der ersten Dinge, die ich erstellt habe, war ein "Movie"-Modell. Dann begann ich, es genauer zu definieren, fügte ein paar Methoden hinzu usw.

Jetzt ist mir klar, dass ich es mit rails generate scaffold um Dinge wie Routing, Ansichten, Controller usw. einzubinden.

Ich habe versucht, das Gerüst zu erstellen, aber ich erhielt die Fehlermeldung, dass eine Migrationsdatei mit demselben Namen bereits existiert.

Wie kann ich jetzt am besten ein Gerüst für meinen "Film" erstellen? (mit Schienen 3)

662voto

Lee Jarvis Punkte 15573

TL;DR : rails g scaffold_controller <name>

Auch wenn Sie bereits über ein Modell verfügen, können Sie die erforderlichen Controller- und Migrationsdateien mit dem Befehl rails generate Option. Wenn Sie die Option rails generate -h können Sie alle verfügbaren Optionen einsehen.

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

Wenn Sie ein Controller-Gerüst für Ihr Modell erstellen möchten, siehe scaffold_controller . Nur zur Klarstellung, hier ist die Beschreibung dazu:

Stubs out einen gerüsteten Controller und seine Ansichten. Übergeben Sie den Modellnamen, entweder CamelCased oder under_scored, und eine Liste von Views als Argumente. Der Name des Controllers wird als eine pluralisierte Version des Modells name.

So erstellen Sie einen Controller Pfad wie 'parent_module/controller_name' an.

Dies erzeugt eine Controller-Klasse in app/controllers und ruft die Template-Engine und Test-Framework-Generatoren auf.

Um Ihre Ressource zu erstellen, verwenden Sie die resource Generator und zur Erstellung einer Migration können Sie auch die migration Generator (Siehst du, es gibt ein Muster in diesem ganzen Wahnsinn). Diese bieten Optionen, um die fehlenden Dateien für die Erstellung einer Ressource zu erstellen. Alternativ können Sie auch einfach Folgendes ausführen rails generate scaffold mit dem --skip Option zum Überspringen vorhandener Dateien :)

Ich empfehle, sich die Optionen in den Generatoren genau anzusehen. Sie sind etwas, das ich nicht das Gefühl, sind extrem gut in Bücher und so dokumentiert, aber sie sind sehr praktisch.

76voto

tokhi Punkte 19702

Großartige Antwort von Lee Jarvis Dies ist nur der Befehl, z.B. haben wir bereits ein bestehendes Modell namens User:

rails g scaffold_controller User

33voto

frenesim Punkte 683

Für diejenigen, die eine Rails-App mit einer bestehenden Datenbank starten, gibt es ein cooles Gem namens schema_to_scaffold um ein Gerüstskript zu erstellen. es ausgibt:

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

von Ihrem schema.rb unser umbenanntes schema.rb. Prüfen Sie es

18voto

Nesha Zoric Punkte 5358

En Schiene 5 können Sie trotzdem ausführen

$rails generate scaffold movie --skip

um alle fehlenden Gerüstdateien zu erstellen oder

rails generate scaffold_controller Movie

um nur den Controller und den View zu erstellen.

Eine bessere Erklärung finden Sie unter Schienengerüst

12voto

Andrew Hendrie Punkte 5903

Mit diesem Befehl sollte es klappen:

$ rails g scaffold movie --skip

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X