[RUBY] [Schienen] Standardwerte festlegen

Über die Einführung und den Standard von Devise

Why

Als ich den Artikel über Geräte nachgeschlagen habe, gab es nur einen Artikel zum Erstellen eines Gerätecontrollers, und ich wollte ihn nur mit application.controller </ font> vervollständigen. Zu diesem Zeitpunkt wusste ich auch nicht, welchen Bereich das Gerät standardmäßig hat, und es dauerte einige Zeit, bis der Fehler behoben war, da ich zusätzliche Spalten und Validierungen geschrieben habe.

Devise vorstellen

Gemfile(Letzte Linie)


gem 'devise'

Terminal


#Das aktuelle Verzeichnis ist~/projects/Bestätigen Sie, dass es ein Bild ist
% pwd

#Installieren Sie Gem
% bundle install

Terminal


#Starten Sie den Server
% rails s

Terminal


#Erstellen Sie eine Konfigurationsdatei
% rails g devise:install

Terminal


#Erstellen Sie ein Benutzermodell mit dem Befehl devise
% rails g devise user

Wenn devise_for: users </ font> wie unten gezeigt enthalten ist, ist dies in Ordnung!

routes.rb


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

Als nächstes wird die Tabelle erstellt

Terminal


#Führen Sie die Migration durch
% rails db:migrate

OK, wenn die Tabelle in der Datenbank erstellt wird!

Schließlich vergessen Sie nicht das Folgende!

Terminal


# 「ctrl +Beenden Sie den lokalen Server mit "C"

#Starten Sie den lokalen Server erneut
% rails s

Nachdem das Gerät eingeführt wurde, müssen Sie es nur noch nach Ihren Wünschen implementieren.

Diesmal über die Standardeinstellung !!! </ font>

c5f52229a3b1938b4297854ebbd2d440.png

Dies ist nicht so relevant, aber nur Name, E-Mail und Passwort werden bei Validierungen angewendet. Wenn ich die Datenbank überprüfe, wird der Passwortteil als Spalte mit encrypted_password </ font> registriert. Ich möchte in "Validates hat kein verschlüsseltes Kennwort?" Stürzen, aber encrypted_password ist , verschlüsselt das Kennwort und speichert es in der Tabelle </ font>. Übrigens ist password_confirmation </ font> in Ordnung, ohne Validierungen anzuwenden.

Die Geschichte ist entgleist, aber hier

a23f24d4b5f8cf20bd382f240b123723.png

Achten Sie auf die 13. Zeile.

Durch die Installation von devise können Sie die Methode devise_parameter_sanitizer </ font> verwenden. Es kann verwendet werden, wenn Sie sich als Benutzer bei devise registrieren, und es ist eine Methode, die "eine bestimmte Spalte zulässt". Definieren Sie für diese Methode eine devise_parameter_sanitizer-Methode </ font>.

devise_parameter_sanitizer-Methode

Durch Kombinieren der Genehmigungsmethode können Sie die neu hinzugefügte Spalte für den in devise definierten starken Parameter angeben und einschließen. Wenn es sich also um eine normale neue Registrierungs- und Anmeldefunktion handelt, kann sie in application.contoroller ausgeführt werden, ohne dass ein Controller erstellt werden muss. (Es ist besser, einen Controller beim Übergang über mehrere Seiten aufgrund einer neuen Registrierung usw. ordnungsgemäß zu erstellen.)

java:application.controller.rb


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

Achten Sie auf die 14. Zeile!

java:application.controller.rb


devise_parameter_sanitizer.permit(:sign_up, keys: [:name])

Zusätzlich zu: name müssen Sie : email </ font> oder : password </ font> in die folgenden Tasten eingeben :. nicht. Devise behandelt dies jedoch standardmäßig hinter den Kulissen, sodass nur : name </ font> in Ordnung ist!

Beiseite

So brechen Sie die Validierung standardmäßig ab

Dies

java:application.controller.rb


devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

Mach das einfach!

java:application.controller.rb


devise :database_authenticatable, :registerable,
         :recoverable, :rememberable

Zusammenfassung

devise ist ein großartiges Juwel, das leicht eingeführt und neue Registrierungs-, Anmelde- und Abmeldefunktionen implementiert werden können. Hinter den Kulissen ist es jedoch zu praktisch, da verschiedene Standardeinstellungen ohne Erlaubnis wiedergegeben werden und unnötige Fehler wahrscheinlich auftreten. Zumindest habe ich eine einfache Standardeinstellung eingeführt.

Recommended Posts