[RAILS] Erklärung von Ruby auf Schienen für Anfänger ⑥ ~ Erstellung der Validierung ~

Einführung

Diese Zeit ist eine Fortsetzung des vorherigen Artikels.

Bitte lesen Sie den vorherigen Artikel, wenn Sie möchten.

Lassen Sie uns diesmal etwas über die Validierung lernen.

Erklärung von Ruby on Rails für Anfänger ①

Erklärung von Ruby on Rails für Anfänger ② ~ Erstellen von Links ~

Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~

Erklärung von Ruby on Rails für Anfänger ④ ~ Verwendung von Namensregeln und form_Tag ~

Erklärung von Ruby on Rails für Anfänger ⑤ ~ Bearbeiten und Löschen der Datenbank ~

Erstellen Sie einen neuen Controller

Lassen Sie uns einen neuen Controller erstellen.

Dieses Mal erstellen wir einen Posts-Controller, der Posts verwaltet. Führen Sie den folgenden Code im Terminal aus.

rails g controller posts all

Stellen Sie sicher, dass Sie alle Ihre Beiträge in der Datei all.html.erb sehen.

Erstellen Sie dazu eine Datei, die einen neuen Beitrag erstellt. Lassen Sie uns eine new.html.erb-Datei in der Posts-Datei erstellen.

image.png

Wir werden neue Beiträge mit dieser Datei new.html.erb erstellen.

Neues Modell erstellen

Jetzt erstellen wir eine Datenbank zum Verwalten von Posts. Dieses Mal habe ich noch keine Datenbank erstellt, daher werde ich sie aus dem Modell erstellen.

Ein Modell ist ein "Mechanismus zum Bearbeiten von Datenbankinformationen" und kann auch als "Klasse, die mit der Datenbank interagiert" bezeichnet werden.

Modelle werden normalerweise in Singularform benannt, beginnend mit einem unteren Buchstaben. Weil es nur ein Modell für die Tabelle gibt.

 rails g model post content: string

Wenn Sie ein solches Modell erstellen, wird gleichzeitig eine Migrationsdatei erstellt, bei der es sich um eine Konstruktionszeichnung der Datenbank handelt.

Lassen Sie uns die Migrationsdatei mit dem folgenden Code ausführen.

rails db:migrate

Lassen Sie uns die erstellte Tabelle in der Datenbankkonsole überprüfen.

rails dbconsole
.table

ar_internal_metadata schema_migrations
posts users

Die Beitragstabelle wurde erstellt. Schauen wir uns den Inhalt mit dem folgenden Code an.

.schema posts

CREATE TABLE IF NOT EXISTS "posts" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "content" varchar, "string" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);

Erstellen Sie einen Beitrag

Fügen wir den Code hinzu, um den Beitrag zur Datei new.html.erb zu erstellen.

new.html.erb


<%= form_tag("/posts/create") do  %>  
  <textarea name="content" cols="30" rows="10"></textarea>
  <input type="submit" value="Senden">
<% end %>

image.png

Ich sende eine Post-Anfrage an die URL "/ posts / create". Die Daten im Textbereich werden in params [: content] gespeichert und gesendet.

Lassen Sie uns wie folgt routen.

routes.rb


post "posts/create" => "posts#create"

Es wird an die Erstellungsaktion des Posts-Controllers weitergeleitet. Um die Textbereichsdaten in der Posts-Tabelle zu speichern, codieren Sie den Posts-Controller wie folgt:

posts_controller.rb


def create
  post = Post.new(content: params[:content])
  post.save
  redirect_to("/posts/new")
end

Sie können die Daten jetzt in der Beitragstabelle speichern.

Füllen Sie den Textbereich wie unten gezeigt aus und klicken Sie auf die Schaltfläche "Senden".

image.png

Lassen Sie uns die Datenbank überprüfen. Geben Sie den folgenden Code in das Terminal ein.

rails dbconsole
.header on
select * from posts;

id|content|string|created_at|updated_at 1|pocomaru||2020-05-23 10:37:51.509719|2020-05-23 10:37:51.509719

Auf diese Weise konnten wir den Beitrag in der Datenbank speichern.

Validierungseinstellungen

Die Validierung ist eine Einschränkung beim Speichern von Daten in der Datenbank.

Wenn Sie sich beispielsweise bei einer Site anmelden, können Sie sich auch dann anmelden, wenn Ihre E-Mail-Adresse und Ihr Passwort leer sind, nicht wahr?

Es existiert, um so etwas zu verhindern.

Die Validierung wird für das Modell festgelegt.

Lassen Sie es uns tatsächlich einstellen.

Verhindern Sie leere Beiträge

Ziehen Sie eine Validierung in Betracht, um leere Beiträge zu vermeiden.

Da in der Posts-Tabelle Posts gespeichert sind, erfolgt diese Validierung innerhalb der Post-Klasse des Post-Modells.

Das Post-Modell lautet standardmäßig wie folgt.

post.rb


class Post < ApplicationRecord
end

Die Validierung wird im folgenden Format geschrieben

validiert: Spaltenname, {Validierungsinhalt}

Die Validierung, um leere Beiträge zu verhindern, lautet wie folgt.

post.rb


class Post < ApplicationRecord
end

Die Validierung wird im folgenden Format geschrieben

validiert: Spaltenname, {Validierungsinhalt}

Die Validierung, um leere Beiträge zu verhindern, lautet wie folgt.

post.rb


class Post < ApplicationRecord
    validates :content, {presence: true}
end

Dies verhinderte leere Beiträge.

Wenn Sie bei der Validierung nicht weiterkommen, können Sie nicht speichern. Wenn das Speichern erfolgreich ist, wird True als Rückgabewert zurückgegeben. Wenn das Speichern nicht erfolgreich ist, wird False als Rückgabewert zurückgegeben.

Schreiben wir den Posts-Controller wie folgt um.

posts_controller.rb


def create
  post = Post.new(content: params[:content])
  if post.save
    redirect_to("/posts/all")
  else
    redirect_to("/posts/new")
  end

Wenn Sie den Code auf diese Weise neu schreiben, wird er bei erfolgreichem Speichern zu "/ posts / all" und bei fehlgeschlagenem Speichern zu "/ posts / new" umgeleitet.

Sie haben jetzt eine Validierung erstellt, die leere Beiträge beseitigt.

Als Nächstes erstellen wir eine Validierung, bei der mehr als eine bestimmte Anzahl von Zeichen entfernt wird.

Verhindern Sie mehr als eine bestimmte Anzahl von Zeichen

Dieses Mal legen wir eine Validierung fest, die das Posten von 20 oder mehr Zeichen verhindert.

Es wird wie folgt sein.

post.rb


class Post < ApplicationRecord
    validates :content, {presence: true}
    validates :content, {length: {maximum: 20}}
end

Mit diesem Teil "validiert: Inhalt, {Länge: {Maximum: 20}}" können Sie Beiträge auf 20 Zeichen oder mehr beschränken.

Es gibt jedoch ein Problem, wenn Sie die Validierung einfach so einstellen. Wenn ich mehr als 20 Zeichen poste, wird der Textbereich leer.

Der Grund liegt im Post-Controller. Wenn die Validierung abgefangen wird und "redirect_to (" / posts / new ")" aufgerufen wird, führt das Routing eine neue Aktion auf dem Posts-Controller aus. Dann kann die Instanzvariable nicht an die Datei new.html.erb gesendet werden, und der Textbereich, den ich hart geschrieben habe, ist leer.

Um dies zu verhindern, verwenden wir eine Methode namens "Rendern".

Rendern ist eine Methode, die gerendert werden kann. Beim Rendern muss der Browser die Ansichtsdatei lesen und zeichnen.

Wenn Sie die Rendermethode in einer Ansichtsdatei verwenden, können Sie eine Teilvorlage verwenden, die den gemeinsamen Teil mehrerer Ansichtsdateien zeichnet.

Wenn Sie es diesmal im Controller verwenden, können Sie die erstellte Instanzvariable an die Ansichtsdatei übergeben, indem Sie sie ohne Aktion rendern.

Schreiben wir den Posts-Controller wie folgt um.

def create
  post = Post.new(content: params[:content])
  @content = params[:content]
  if post.save
    redirect_to("/posts/all")
  else
    render("posts/new")
  end
end

Nachdem ich den Inhalt des Beitrags in "@ content" gespeichert habe, zeichne ich eine new.html.erb-Datei mit render anstelle von redirect_to.

Auf diese Weise können Sie die Instanzvariable "@ content" an new.html.erb übergeben.

Um diese Instanzvariable in der Datei new.html.erb anzuzeigen, schreiben Sie sie wie folgt neu:

new.html.erb


<%= form_tag("/posts/create") do  %>  
  <textarea name="content" cols="30" rows="10"><%= @content%></textarea>
  <input type="submit" value="Senden">
<% end %>

Wir übergeben "@ content" an den Anfangswert des Textbereichs. Jetzt können Sie den Wert sehen, wenn Sie in der Validierung stecken bleiben.

Probieren wir es aus.

image.png

Geben Sie wie unten gezeigt mindestens 20 Zeichen ein und drücken Sie Senden.

image.png

Nichts ändert sich besonders.

image.png

Am Ende

Das ist alles für diese Zeit.

Vielen Dank für Ihre Beziehung.

Bitte lesen Sie die folgenden Artikel, wenn Sie möchten.

Erklärung von Ruby on Rails für Anfänger ⑦ ~ Implementierung von Flash ~

Recommended Posts

Erklärung von Ruby auf Schienen für Anfänger ⑥ ~ Erstellung der Validierung ~
Erklärung von Ruby auf Schienen für Anfänger ①
Erklärung von Ruby on Rails für Anfänger ② ~ Links erstellen ~
Erklärung von Ruby on Rails für Anfänger ⑦ ~ Flash-Implementierung ~
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Erklärung von Ruby on Rails für Anfänger ⑤ ~ Datenbank bearbeiten und löschen ~
[Verfahren 1 für Anfänger] Ruby on Rails: Aufbau einer Entwicklungsumgebung
Erklärung von Ruby on Rails für Anfänger ④ ~ Informationen zu Benennungsregeln und zur Verwendung von form_Tag ~
Validierungseinstellungen für die Ruby on Rails-Anmeldefunktion
Portfolioerstellung Ruby on Rails
Zusammenfassung der Ruby on Rails-Validierung
Grundkenntnisse in Ruby on Rails
[Ruby on Rails] Erstellung der Bestätigungsseite
[Ruby on Rails] Einführung der Anfangsdaten
Befehl zum Erstellen / Löschen von Ruby on Rails-Modellen
Ruby on Rails-Anwendung neuer Erstellungsbefehl
[Ruby on Rails] Japanische Fehlernotation
[Ruby on Rails] Implementierung einer ähnlichen Funktion
Anfänger haben mit Ruby on Rails ein Portfolio erstellt
Eine Reihe von Ablauf der Tabellenerstellung → Datensatzerstellung, Löschung → Tabellenlöschung in Ruby on Rails
Implementierung der Ruby on Rails-Anmeldefunktion (Sitzung)
[Anfänger-Verfahrenshandbuch 2] Ruby on Rails: Erstellen einer Rails-Vorlage
[Ruby on Rails] Bis zur Einführung von RSpec
Empfehlung der Serviceklasse in Ruby on Rails
[Ruby on Rails] Select2-Einführungsnotiz für Webpacker
Ruby on Rails ~ Grundlagen von MVC und Router ~
[Ruby on Rails] Ein Memorandum mit Layoutvorlagen
[Rails] Verfahren zum Verknüpfen von Datenbanken mit Ruby On Rails
[Ruby on Rails] Individuelle Anzeige von Fehlermeldungen
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
[Ruby on Rails] Asynchrone Kommunikation der Posting-Funktion, Ajax
Implementierung der Ruby on Rails-Anmeldefunktion (Devise Edition)
Versuchen Sie es mit dem Ruby on Rails-Abfrageattribut
[Ruby on Rails] Implementierung einer Validierung, die nur funktioniert, wenn die Bedingungen erfüllt sind
Ruby on Rails Lernrekord -2020.10.03
Ruby on Rails Lernrekord -2020.10.04
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ②
(Für Anfänger) [Rails] Installieren Sie das Gerät
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Ruby on Rails Grundlegendes Memorandum