Wir haben zusammengefasst, wie Benutzerverwaltungsfunktionen in Rails mithilfe von gem devise implementiert werden.
Fügen Sie zuerst der Gemfile ein Gerät hinzu.
gemfile
gem 'devise'
Führen Sie die Bundle-Installation ** aus und starten Sie den Server neu. ** ** **
Erstellen Sie dann eine Konfigurationsdatei.
$ rails g devise:install
Erstellen Sie ein Benutzermodell.
rails g devise user
Zu diesem Zeitpunkt wird die Migrationsdatei gleichzeitig mit der Erstellung des Benutzermodells generiert. Wenn also eine Spalte hinzugefügt werden muss, beschreiben Sie diese vor der Migration.
○○_devise_create_users.rb
--Kürzung--
class DeviseCreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
## Database authenticatable
t.string :nickname, null: false, default: ""
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
t.string :family_name, null: false, default: ""
t.string :first_name, null: false, default: ""
t.string :read_family, null: false, default: ""
t.string :read_first, null: false, default: ""
t.date :birth, null: false
--Kürzung--
E-Mail und Passwort sollten standardmäßig angehängt werden, daher habe ich diesmal erstellt, um weitere Spalten hinzuzufügen.
Nebenbei verwende ich den Datumstyp bei der Vorbereitung der Geburtsdatumsspalte, aber da der Standardwert nur mit einer Konstante festgelegt werden kann, habe ich diesmal nicht den Standardwert festgelegt.
Migrieren Sie, wenn Sie bereit sind.
$ rails db:migrate
Sie müssen lediglich die Ansichtsdatei vorbereiten und können loslegen.
Um andere Informationen als E-Mail und Passwort bei der Anmeldung des Benutzers zu registrieren, muss dies in application_controller beschrieben werden.
application_controller.rb
class ApplicationController < ActionController::Base
before_action :authenticate_user!, except: [:index]
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :family_name, :email, :first_name, :read_family, :read_first, :birth])
end
end
Wenn Sie zu einer anderen Seite wechseln als auf der Indexseite, können Sie sich zwingen, zur Anmeldeseite zu springen. Ich habe die before_action: authenticate_user! -Methode geschrieben.
Zusätzliche Parameter registrieren Before_action: Schreiben Sie die Methode configure_permitted_parameters.
Stellen Sie außerdem sicher, dass Sie die Modellinstanzvariablen und -pfade an die Methode form_with der Ansichtsdatei übergeben.
ruby:views/devise/registrations/new.html.erb
---Kürzung---
<%= form_with class: 'registration-main', model: @user, url: user_registration_path, local: true do |f| %>
---Kürzung---
ruby:views/devise/sessions/new.html.erb
---Kürzung---
<%= form_with class: 'registration-main',model: @user, url: user_session_path, local: true do |f| %>
---Kürzung---
Ohne sie funktioniert es nicht gut mit der Benutzertabelle.
Hier implementieren wir eine Abmeldeschaltfläche in der Ansichtsdatei mit der Methode link_to. Der Punkt ist, sich daran zu erinnern, den Pfad zu schreiben, um die Benutzersitzung zu trennen.
ruby:xxx.html.erb
<li><%= link_to 'Ausloggen', destroy_user_session_path, method: :delete, class: "logout" %></li>
Wenn Sie angemeldet sind, werden auf der Seite eine Schaltfläche zum Verschieben zu Meine Seite und eine Schaltfläche zum Abmelden angezeigt. Ich werde auch die Beschreibung zusammenfassen, damit die neue Registrierungsschaltfläche und die neue Anmeldeschaltfläche angezeigt werden, wenn Sie nicht angemeldet sind (wenn Sie ein Gast sind).
Verwenden wir die user_signed_in? -Methode der Hilfsmethode. Schreiben Sie Folgendes in die entsprechende Ansichtsdatei.
ruby:views/xxx.html.erb
<% if user_signed_in? %>
<li><%= link_to current_user.nickname, root_path, class: "user-nickname" %></li>
<li><%= link_to 'Ausloggen', destroy_user_session_path, method: :delete, class: "logout" %></li>
<% else %>
<li><%= link_to 'Einloggen', new_user_session_path, class: "login" %></li>
<li><%= link_to 'Anmelden', new_user_registration_path, class: "sign-up" %></li>
<% end %>
Recommended Posts