Rails Tutorial (4. Ausgabe) Persönliche Notizen Beschreiben Sie den Teil, an dem Sie interessiert sind, und den Teil, den Sie möglicherweise vergessen.
Sie haben den Benutzer-Controller am Ende des vorherigen Kapitels (5.4) erstellt. Die Fortsetzung. Von Kapitel 6 bis Kapitel 12 werden wir jede Funktion der Benutzerauthentifizierung erstellen. Davon befasst sich Kapitel 6 mit dem Datenmodell und der Speicherung des Benutzers.
Rails verfügt bereits über einen Mechanismus zum Implementieren der Authentifizierung, aber jeder Dienst erfordert viel benutzerdefinierte Authentifizierung. Dies ist eine Neuerfindung des Rads, aber das Rails-Tutorial erfindet das Rad neu, da es einfacher ist, eine Zertifizierung durch Dritte zu implementieren, wenn Sie wissen, wie es geht.
Rails nennt die Standarddatenstruktur, die als Datenmodell behandelt wird, "Model" (M in MVC). Schienen Standardmäßig wird "Active Record" verwendet, um mit diesem Modell zu interagieren. Dies ist etwas, das CRUD und Konstruktion ausführt, ohne SQL zu kennen.
Erstellen Sie ein Benutzermodell, um die Datenbank beizubehalten. Führen Sie genau wie beim Erstellen des Users-Controllers "$ Rails g" aus.
Als eine Erinnerung
Der Controller ist ** Plural ** Benutzer
Das Modell ist ** Singular ** User
Es ist üblich zu sagen.
$ rails g model User name:string email:string
Übergeben Sie das in DB verwendete Attribut (Spaltenname in DB) und den Typ mit :
dazwischen.
Es werden verschiedene Dinge generiert, aber in db / migrate /
gibt es eine Datei namens time stamp_create_model name s.rb
.
Informationen zum Erstellen einer Datenbank werden hier definiert.
db/migrate/Zeitstempel_create_users.rb
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
Die ID und der Zeitstempel werden automatisch vorbereitet, auch wenn Sie sie nicht angeben.
Betrachtet man den Klassennamen, so scheint er "ActiveRecord :: Migration [5.0]" zu erben.
(5.0 im Rails-Tuto, aber 5.1-Notation für meine Umgebung)
timestamps
erstellt zwei Spalten für Zeitstempel [ created_at
, updated_at
].
Ist es so mit MySQL?
mysql
CREATE DATABASE User;
USE Users;
CREATE TABLE users(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(300),
email VARCHAR(300),
created_at TIMESTAMP NOT NULL CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
);
Jedes Mal, wenn ich SQL schreibe, schreibe ich, dass ein Onkel, der Groß- oder Kleinschreibung nicht zulässt, wahrscheinlich auftritt (ich war auch in meinem vorherigen Job). Um ehrlich zu sein, denke ich, dass es in diesem Alter in Ordnung ist, alle unteren Buchstaben zu verwenden. ~~ Schreibe übrigens in meinem vorherigen Job das Datum in varchar () und hör auf, Mist zu machen ~~
Migration anwenden. Laut einem Freund wurde ich daran erinnert, dass es ein Befehl war, in der Mehrpersonenentwicklung mit besonderer Sorgfalt zu explodieren. Seien wir vorsichtig. Die DB-Seite ist nicht versioniert.
$ rails db:migrate
** Übung **
Ich habe User.new
in der Rails-Konsole gemacht und überprüft, welche Art von Vererbungsbeziehung es hatte.
User class
< ApplicationRecord
<ActiveRecord :: Base
< Object
<BaseObject
Rollt am Ende alle Änderungen an der Datenbank zurück.
$ rails console --sandbox
Experimentieren Sie damit.
Die Benutzerklasse wurde erstellt, als das Modell erstellt wurde (app / model /
), das von ActiveRecord
geerbt wird.
Methode verwendet unten
gültig?
: Bestätigung der Gültigkeit (Gültigkeit)
save
: Speichern
Beim Speichern werden Zeitstempel auf "create_at" und "update_at" gestempelt.
Im Rückgabewert wird der Bool-Wert zurückgegeben, ob er gespeichert wurde oder nicht.
create
: User.new erstellt es nur im Speicher, speichert es jedoch gleichzeitig mit der Erstellung.
** Übung ** User.create user.name ActiceSupport::timeWithZone
Kurz gesagt, es ist wie das Angeben eines Spaltentyps in SQL
Für : email
ist Double
oder Boolean
nicht enthalten.
Die folgenden 4 Punkte
--Gegenwart --Länge --Format --Einzigartigkeit
Recommended Posts