20. März 2020 542 reads

Scaffolding in Ruby on Rails bezieht sich auf die automatische Generierung eines Satzes von einem Modell, Ansichten und einem Controller, der normalerweise für eine einzelne Datenbanktabelle verwendet wird.

Zum Beispiel kann man mit folgendem Befehl einen fertigen Controller, ein Model und Views mit einem kompletten CRUD (Create, Read, Update, Delete) Webinterface für die Tabelle Story automatisch generieren:

$rails generate scaffold Story title:string content:text

Es ist viel einfacher, dies zu tun, als alles selbst zu programmieren, es spart eine Menge Zeit!

Gerüst oder Modelle?

Im Gegensatz zum Gerüst, das alles generiert, was man braucht (und auch nicht braucht), erstellen Modelle nur einige verwandte Komponenten. Der beste und von mir bevorzugte Weg, den Unterschied zwischen Scaffold und Models zu erklären, ist das folgende Beispiel:

Generate models

Nachdem Sie den Befehl

$rails generate model Story title:string content:text

eingegeben haben, erzeugen Sie:

invoke active_record bindet Ihr Model an die Datenbank, während die nächste Zeile eine Migrationsdatei erstellt. Migrationen werden verwendet, um Ihr Datenbankschema zu ändern. Diese Migrationsdatei erstellt die Datenbanktabelle „stories“ und Datenbankspalten für „title“ und „content“.

Die dritte Zeile erstellt ein Modell – eine Ruby-Klasse, die den Active Record erbt. Damit kann nun jede Methode, die in Active Record aufgerufen werden kann, auch in Ihrem Modell aufgerufen werden. In den letzten drei Zeilen werden zugehörige Testdateien für Ihr Modell erstellt.

Mit Scaffolding sind Sie zwar schnell startklar, aber der Code, den es erzeugt, ist wahrscheinlich nicht perfekt auf Ihre Anwendung zugeschnitten. Höchstwahrscheinlich werden Sie den generierten Code anpassen wollen. Viele erfahrene Rails-Entwickler vermeiden Scaffolding komplett und ziehen es vor, den gesamten oder einen Großteil ihres Quellcodes von Grund auf neu zu schreiben. Sie können mehr darüber in den RailsGuides lesen.

Wie Sie sehen können, erzeugt generate models keine Art von View um Informationen auf einer Seite anzuzeigen. Um eine komplette, gebrauchsfertige Anwendung zu haben, müssten Sie:

  • Controller generieren (was wiederum auch Views generiert) oder
  • generate scaffold (was Ihr Model, Views und Controller generiert und in Ihre routes.rb Datei schreibt).

Wenn du deine Meinung änderst und dich entscheidest, scaffold zu benutzen, nachdem du bereits das Modell generiert hast, kannst du immer

$rails generate scaffold <name>

es wird alle fehlenden Dateien erstellen.

Generate scaffold

Wenn man den Befehl

$rails generate scaffold Story title:string content:text

eingibt, werden folgende Dateien generiert:

Nachdem die modellbezogenen Tests erstellt wurden, werden in der nächsten Zeile die Ressourcenrouten zu den Stories generiert. Nach der Generierung der Ressource-Routen folgen der Controller und seine Aktionen (index, show, new, edit, create, update und destroy), zusammen mit Views und Controller-Tests für jede dieser Aktionen.

Der Rails-Router erkennt URLs und verbindet sie mit der Aktion eines Controllers. Standardmäßig wird die Aktion eines Controllers eine gleichnamige View rendern.

Migration

Jedes Mal, wenn Sie eine Migration mit Hilfe von Skripten (generate model/generate scaffold) erstellen, wird eine neue Migration zum richtigen Verzeichnis hinzugefügt. Sie verwenden

$rake db:migrate

um zu überprüfen, welche Migrationen noch nicht zur Datenbank hinzugefügt wurden.

Destroy

Jeder kann seine Anwendung bearbeiten und die notwendigen Änderungen vornehmen, damit sie wie vorgesehen funktioniert, auch wenn das bedeutet, dass Gerüst komplett entfernt wird. Sie können das Gerüst auf folgende Weise entfernen:

  1. Gerüst erzeugen:
    $rails generate scaffold Story
  2. Wenn Sie Ihre Dateien migriert haben, führen Sie ein Rollback durch:
    $rake db:rollback
  3. Gerüst zerstören oder rückgängig machen:
    $rails destroy scaffold Story

Damit löschen Sie alle von der Gerüststruktur erstellten Dateien, aber zusätzliche Änderungen, die Sie möglicherweise manuell vorgenommen haben, werden nicht entfernt.

Fazit

Eine Gerüststruktur eignet sich hervorragend, wenn es um einfache Beispiele, schnelle Mockups oder Tests geht. Erstellen Sie jedoch unbedingt Ihre eigenen Modelle, wenn Sie eine neue Anwendung entwickeln wollen. Vergessen Sie nicht, Ihre Anwendung immer zu testen. Finden Sie heraus, wie Sie das mit Capybara tun können!

Wir hoffen, Sie haben heute etwas Neues entdeckt!

Vormals veröffentlicht unter https://kolosek.com/rails-scaffold/

Tags

Join Hacker Noon

Erstelle dein kostenloses Konto, um dein eigenes Leseerlebnis freizuschalten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.