[RUBY] [Schienen] Standardwerte festlegen
Über die Einführung und den Standard von Devise
- Einführung des Geräts
- Standard festlegen
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>
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
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.