Fügen Sie "gem'devise" zur Gemfile hinzu und führen Sie "bundle install" im Terminal aus Nachdem Sie "Rails g Devise: Install" ausgeführt haben, erstellen Sie ein Benutzermodell mit "Rails G Devise User" Damit wird auch das Routing automatisch erstellt.
Teilvorlage anzeigen: Fügen Sie im Hauptteil der App-Ansicht "<% = render'layouts / header"%> "hinzu Teilvorlage erstellen: Erstellen Sie eine Datei _header.html.erb im Layoutordner der Ansicht
Verwenden Sie <%, wenn user_signed_in?%> ← user_signed_in? Ist eine von devise bereitgestellte Methode, sodass Sie sie nicht definieren müssen.
Akzeptieren Sie die Registrierung nur für die E-Mail-Adresse der Person
: bestätigbar
hinzugefügtconfig.action_mailer.default_url_options = {host:" localhost ", port: 3000}
zu config / environment / development.rb hinzugefügt (= configuration / environment / development file)● Überprüfen Sie die in der Entwicklungsumgebung gesendete E-Mail
gem'letter_opener_web
in die Gruppe ein: Entwickeln Sie Gemfile und führen Sie die Bundle-Installation ausconfig.action_mailer.delivery_method =: letter_opener_web
am Ende der Entwicklungsdatei hinzu, die Sie zuvor hinzugefügt haben.routes.rb
if Rails.env.development?
mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
Rufen Sie den von devise bereitgestellten Ansichtsordner mit "Rails g Devise: Views" auf
● Führen Sie "Rails g Migration AddNameToUsers" aus und fügen Sie "add_column: users,: name,: string" in der def-Änderung der erstellten Migrationsdatei hinzu
● Umschreiben des neuen Registrierungsformulars
● Stellen Sie starke Parameter ein
-Erstellen Sie eine Controller-Datei für die neue Benutzerregistrierungsfunktion: Rails g Devise: Controller-Benutzer
app / controller / users / registrations_controller.rb wird zum Controller für die neue Registrierung. Kommentieren Sie den Teil zu configure_sign_up_params aus
· Schreiben Sie die Routing-Datei neu, um die angepasste Controller-Datei anzuwenden
Fügen Sie nach devise_for: users controller: {registrations: 'users / registrations'}
hinzu
● Erstellen eines Controllers zur Anzeige der Benutzerdetailseite "Rails g Controller-Benutzer"
● Definieren Sie die Aktion anzeigen, routen, Ansichtsdatei erstellen
Der Schlüssel des nicht kommentierten Teils des neu registrierten Controllers wurde nicht als Name verwendet. - Die Ursache war ein Rechtschreibfehler in der Stammdatei.
Stellen Sie sicher, dass die Fragentabelle user_id und Spalten enthält
● Erstellen Sie eine Migrationsdatei "Rails g Migration AddUserIDToQuestions"
・ Führe add_reference: question ,: user, Foreign_key: true
aus. ➡️ migriere in def change
● Verarbeitung zur Eingabe eines Wertes in user_id
● Modellassoziation (Assoziation)
-Has_many: Fragen
in der Benutzermodelldatei
Durch Hinzufügen von "Gehört zu: Benutzer" zur Fragenmodelldatei können Sie einem Benutzer mehrere Fragen und einem Benutzer einen Fragen zuordnen.
・ Wenn Sie der Fortsetzung von has_many ~ in ↑ depandent: destroy
hinzufügen, wird beim Erstellen eines Benutzers auch die erstellte Frage gelöscht.
● Zeigen Sie die Titelliste der erstellten Frage auf der Seite mit den Benutzerdetails an ・ Da ich eine Zuordnung verwende, kann ich die Frage dieses Benutzers unter @ user.questions abrufen.
● Routing ・ `Get" / question /: id / edit ", to:" Fragen # edit " ・ Patch "/ Fragen /: ID", um: "Fragen # Update" ⭐️ ・ Löschen Sie "/ fragen /: id", um: "Fragen # zerstören"
● Aktionsdefinition und Ansichtserstellung
model: @ question
erstellt werden, das im Tag form_with angegeben ist.● Fügen Sie auf der Seite mit den Fragendetails einen Link zur Seite zum Bearbeiten / Löschen ein
method :: HTTP request method, data: {verify:" message "}
an.● Nur angemeldeten Benutzern erlauben, zu bearbeiten / löschen / fragen
Verwenden Sie die Methode devise (authenticate_user!
)
-Fragen Controller before_action: authenticate_user !, Nur: [: new ,: create, edit, update ,: destroy]
● Lassen Sie nur die Person, die die Frage erstellt hat, bearbeiten / löschen
・ Unter ↑ before_action: sure_correct_user nur: [: edit ,: update ,: destroy]
-Definieren Sie sure_correct_user unter privat
◎ Unterschied zwischen find (params [: id]) und find_by (id: params [: id])
Die Verarbeitung, wenn der Wert nicht gefunden wird, ist unterschiedlich [Referenz](https://doruby.jp/users/tn_on_rails/entries/-Rails-find(%3Cid%3E)%E3%81%A8find_by(id--%3Cid) % 3E)% E3% 81% AE% E9% 81% 95% E3% 81% 84)
find: erhalte einen Fehler
find_by: gibt null zurück
● Bearbeiten / Löschen von Links nur für die Person anzeigen, die die Frage erstellt hat
● In der Ansicht rendern zeigt eine Teilvorlage an
● Die link_to-Methode method:
gibt den Typ der HTTP-Anforderungsmethode an. Wenn nicht angegeben, wird es erhalten
Zeigen Sie eine Warnung an, wenn Sie auf einen Link mit data: {verify:" text "}
klicken
● ul tag = ungeordnetes Listen-Tag. Wird für relevante und regelmäßige Dinge verwendet (Navigationsmenüs, Diashows usw.)
● Ruby-Einbettungscode: <% =%>, wenn Sie ihn anzeigen möchten, aber nicht gleich, wenn Sie ihn nicht anzeigen müssen
● Wenn Sie nach einmaliger Ausführung der Migration Änderungen vornehmen möchten, müssen Sie ein Rollback durchführen und anschließend "bin / Rails db: migrate" ändern und ausführen.
● add_reference erstellt die Spalten, die zum Zuordnen der Tabelle erforderlich sind. _Id wird automatisch zum Spaltennamen hinzugefügt
Externe Schlüsselbeschränkung (Foreign_key: true
): Etwas, das beim Erstellen eines externen Schlüssels sicherer ist
● Assoziation ist bequem
● Routing-Methoden: Patch (teilweise Aktualisierung der Ressourcen) und Löschen
● Automatisches Massenrouting "Ressourcen: Controller-Name"
Führen Sie "Schienenrouten" aus und bestätigen Sie sie
Recommended Posts