[RUBY] Gerät mit Schienen handhaben

Zunächst möchte ich den Ablauf der Geräteeinführung (den ich durchgeführt habe) überprüfen und mich hier daran erinnern. Da ich ein Anfänger bin, kontaktieren Sie mich bitte jedes Mal, wenn Sie mir etwas falsches sagen.

Über das Entwickeln

Erstens, eine Übersicht über das Gerät, dies ist ein Juwel für die Implementierung von Benutzerverwaltungsfunktionen. Sie können problemlos eine neue Registrierung und Anmeldung / Abmeldung implementieren.

Devise vorstellen

Lassen Sie uns die Gemfile bearbeiten

gem 'devise'(Fügen wir zur letzten Zeile hinzu)

Sie können jetzt lokal, im Test und in der Produktion mit Ihrem Gerät arbeiten.

Starten Sie den lokalen Server neu

Starten Sie nach der Installation von Gem den lokalen Server, der im Terminal ausgeführt wird, einmal neu. Der Zeitpunkt für die Reflektion des installierten Gems liegt darin, dass der Server gestartet wird.

Erstellen Sie eine Konfigurationsdatei

Um devise verwenden zu können, muss zusätzlich zur Installation von Gem eine Einstellungsdatei mit einem Befehl für devise erstellt werden. Erstellen wir mit diesem Befehl eine Datei

% rails g devise:install

Erfolg, wenn das folgende Protokoll fließt!

      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
===============================================================================

Depending on your application's configuration some manual setup may be required:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

     * Required for all applications. *

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"
     
     * Not required for API-only Applications *

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

     * Not required for API-only Applications *

  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views
       
     * Not required *

===============================================================================

Erstellen Sie ein Benutzermodell auf dem Gerät

Bei Verwendung von devise muss ein neues Benutzermodell zum Erstellen eines Kontos erstellt werden. Erstellen Sie zum Erstellen ein Benutzermodell mit dem Befehl zur Modellerstellung von devise anstelle der üblichen Modellerstellungsmethode. Mit dem folgenden Befehl können Sie das Modell, die zugehörige Migrationsdatei und die Routing-Einstellungen gleichzeitig generieren. Die mit devise verbundenen Pfade werden zu route.rb hinzugefügt.

 rails g devise user

Erfolg im folgenden Protokoll

  invoke  active_record
      create    db/migrate/20200309082300_devise_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      insert    app/models/user.rb
       route  devise_for :users

Darüber hinaus werden die folgenden Routen automatisch zu route.rb hinzugefügt.

Rails.application.routes.draw do
  devise_for :users
  root to: 'tweets#index'
  resources :tweets
end

devise_for ist eine Gerätemethode, die mehrere Routen generiert, die für Benutzerfunktionen gleichzeitig erforderlich sind.

Eine Tabelle erstellen

Da die Migrationsdatei auch vom vorherigen Befehl generiert wurde, migrieren Sie sie.

rails db:migrate

Die Tabelle wurde hier erstellt.

** Da die Tabelleninformationen geändert (migriert) wurden, starten wir den lokalen Server beim Starten neu. ** ** **

Erstellen einer Ansichtsdatei für das Gerät

Wenn Sie die Anmeldefunktion in devise implementieren, wird der Anmelde- / Anmeldebildschirm automatisch generiert, jedoch nicht als Ansichtsdatei. Dies liegt daran, dass wir eine Ansichtsdatei laden, die im Gerätedelstein vorhanden ist.

Um Änderungen an der Geräteansichtsdatei vorzunehmen, müssen Sie den Befehl devise verwenden, um die Ansichtsdatei zu generieren.

Führen Sie den Befehl aus, um eine Ansicht für das Gerät zu erstellen

% rails g devise:views

Bearbeiten Sie die Ansicht des Anmeldebildschirms und die Ansichtsdatei des hier erstellten neuen Registrierungsbildschirms, um das Erscheinungsbild zu erstellen.

Damit ist die Grundinstallation des Geräts abgeschlossen. Mir ist bewusst, dass es hier in Ordnung ist, wenn es einfach ist, Wird auch in Geräten verwendet

rails g devise:contoroller users

Es gibt. Ich möchte die Verwendung in einem anderen Artikel unten zusammenfassen. (Weil ich die erforderlichen Standards nicht verstehe)

Installation starker Parameter

Die Informationen, die Sie bei der Anmeldung eingeben, werden als Parameter an den Server gesendet. Für normale Anforderungen ohne Gerät haben wir starke Parameter in den Controller geschrieben, um die Parameter zu begrenzen, die empfangen werden können.

Schreiben Sie zum Entwickeln auch starke Parameter in den Controller. Der Controller, der das Gerät verarbeitet, ist jedoch im Gem beschrieben und kann nicht bearbeitet werden. Wenn Sie die Anmeldefunktion mit devise zusätzlich zu params implementieren, erhalten Sie auch Parameter, die sich von params unterscheiden.

Aus dem oben Gesagten benötigen wir eine Methode, um starke Parameter auf dem Gerätesteuergerät wiederzugeben, und eine Methode, um gerätespezifische Parameter zu erfassen.

devise_parameter_sanitizer-Methode

Eine Methode wie params in devise. Sie können Parameter aus Anforderungen wie "Login" und "New Registration" abrufen, die sich auf das Benutzermodell von devise beziehen.

Durch Kombinieren dieser Methode mit der Genehmigungsmethode können Sie auch neu hinzugefügte Spalten für die in devise definierten starken Parameter angeben und einschließen.

Die Methode devise_parameter_sanitizer wird in der neu definierten privaten Methode wie die vorherigen starken Parameter verwendet. Da der Anbieter von devise den neu definierten Methodennamen als configure_permitted_parameters einführt, ist es üblich, ihn mit diesem Methodennamen zu definieren.

private
def configure_permitted_parameters  #Methodenname ist üblich
  #Zulassen von Parametern für das Benutzermodell des Geräts
  devise_parameter_sanitizer.permit(:Prozessname entwickeln, keys: [:Schlüssel zu erlauben])
end

Die Erlaubnis zum Entwickeln fügt die zulässigen Parameter hinzu, indem der Schlüssel im Array für den Schlüssel des Entwurfsverarbeitungsnamens im ersten Argument und die Schlüssel im zweiten Argument angegeben wird.

Für den Prozessnamen des ersten Arguments können sign_in, sign_up und account_update verwendet werden, die bereits in devise festgelegt wurden. Sie entsprechen den Prozessen zum Zeitpunkt der Anmeldung, Anmeldung bzw. Aktualisierung der Kontoinformationen.

Prozessnamensrolle
:sign_in Bei der Anmeldung (Login) Verarbeitung
:sign_up Bei der Verarbeitung der Anmeldung (neue Registrierung)
:account_Update Bei der Verarbeitung wird die Kontoinformation aktualisiert

Schreiben Sie diese Beschreibungen in ** application_controller.rb **.

app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  private
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
  end
end

Beachten Sie, dass wir die if-Option von before_action verwenden. Durch Angabe des Methodennamens im Wert wird festgelegt, dass der Prozess nur ausgeführt wird, wenn der Rückgabewert wahr ist.

Dieses Mal habe ich den Namen der Hilfsmethode von devise angegeben: devise_controller?. Wenn es sich um die Verarbeitung des Controllers handelt, der sich auf devise bezieht, wird die Methode configure_permitted_parameters nur zu diesem Zeitpunkt ausgeführt. Selbst wenn der Prozess von anderen Tweets-Controllern gelesen wird, wird er nicht ausgeführt.

Über andere Befehle

Schienen g Migrationsbefehl

Ein Befehl zum Generieren einer Migration. Die Migration wurde zuvor mit dem Modell mit dem Befehl Rails g model generiert, wird jedoch beim Ändern des Inhalts einer bereits erstellten Tabelle verwendet.

Dieser Befehl beschreibt automatisch, welche Art von Tabellenoperation gemäß dem Namen der angegebenen Datei ausgeführt werden soll.

Schienen g Migration Spaltennamen hinzufügen Zum Hinzufügen des Zieltabellennamens Mithilfe von Typ wird die Migration mit dem Code generiert, der zum Hinzufügen der Spalte zur Tabelle erforderlich ist.

** Schlangen- und Kamelkoffer **

Der Schlangenfall und der Kamelfall repräsentieren jeweils, wie Wörter getrennt werden.

Schlangenfälle verwenden Unterstriche, um Wörter zu trennen Kamel Fall groß geschrieben Wortumbrüche Wenn Wörter mit Variablennamen oder Funktionsnamen aufeinanderfolgend sind, gibt es verschiedene Möglichkeiten, die Wörter zu trennen. Siehe die folgende Tabelle.

Notationsmethode Erläuterungsbeispiel
Camel case adminUserCommentCreator mit unteren Anfängen und oberen Worttrennzeichen
Oberes Kamelgehäuse Eines der Kamelgehäuse. AdminUserCommentCreator, der Wortbegrenzer von Anfang an großschreibt
Snake Case Admin mit Unterstrich für Wortumbrüche_user_comment_creator

Die übliche Namenskonvention für Rails lautet wie folgt.

Namensziel Übliche Namenskonventionen
Klassenname Großer Kamelkasten
Methodenname Schlangenfall
Variablenname Schlangenfall

Beachten Sie diese Namenskonventionen, wenn Sie eigene Klassen und Methoden erstellen.

Recommended Posts

Gerät mit Schienen handhaben
[Schienen] erfinden
Erstellen Sie meine Seite mit Rails
[Rails] Einführung in das Gerät
So behandeln Sie Anmeldefehler mit devise
[Rails] entwickelt eine Hilfsmethode
[Rails] Passen Sie die Validierung des Geräts an
[Rails 6] Laufzeitfehler mit $ Rails s
Behandeln Sie Dateien mit NIO.2.
Behandeln Sie JSON mit minimal-json
[Rails] Lernen mit Rails Tutorial
[Schienen] Test mit RSpec
[Rails] Entwicklung mit MySQL
[Rails] entwickeln eine Einführungsmethode
Unterstützt Mehrsprachigkeit mit Rails!
[Schienen] Standardwerte festlegen
Ich möchte Benutzer mit Devise + OmniAuth bei Rails authentifizieren
[Rails] Ersteinstellung der vom Benutzer erstellten Anmeldung mit devise, devise_token_auth
[Rails] Einführung in die Grundlagen der Entwicklung
[Rails] Polymorph mit graphql-rubin ausdrücken
Was ist Rails Gem Devise?
[Rails] Videos mit Rails hochladen (ActiveStorage)
[Rails] Flow bei der Installation von Gem Devise
[Vue Rails] "Hallo Vue!" Wird mit Vue + Rails angezeigt
Japanisieren Sie mit i18n mit Rails
Vorbereitung für die Entwicklung mit Rails
(Für Anfänger) [Rails] Installieren Sie das Gerät
Führen Sie Rails immer im Docker aus
[Docker] Rails 5.2-Umgebungskonstruktion mit Docker
Verwenden Sie mit Rails 6.0 mehrere Datenbanken
[Schienen] Spalte zum Entwickeln hinzufügen
[Rails] Geben Sie das Format mit link_to an
[Rails] Fehler während der Installation des Geräts
[Docker] Wird immer mit Docker + Rails verwendet
Behandle Daten mit Javascript (moment.js)
Ich war süchtig danach, default_url_options mit der Einführung von Rails zu setzen
[Rails] Probleme, die mit devise nicht registriert / angemeldet werden können
[Rails] Wie man Edelstein "devise" benutzt
[Schienen] Getriebe mit LINE Bot schieben
[Rails] Pagenation mit Ajax kompatibel machen
[Rails] Implementierung des Anmeldebildschirms in Devise
[Rails] Unerwarteter Validierungsfehler im Gerät
[Grover] PDF mit Rails generieren [Version 2020]