[RUBY] Implementieren Sie Benutzerverwaltungsfunktionen mit Devise

Installieren Sie Devise

In erster Linie beginnt alles mit der Installation dieses Edelsteins.

Gerät installieren


% gem'devise'
% bundle install
% rails g devise:install

Damit ist die Installation abgeschlossen.

Entwickeln Sie verwandte Dateien

Modell generieren

rails g devise user

Ein Benutzermodell und eine Migrationsdatei werden generiert.
Wenn dieser Befehl ausgeführt wird, wird das Routing automatisch in config / route.rb festgelegt.

config/routes.rb


Rails.application.routes.draw do
  devise_for :users
  # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end

Ansicht generieren

rails g devise:views

Wenn Sie diesen Befehl ausführen, wird im Handumdrehen automatisch eine Ansichtsdatei der erforderlichen Funktion generiert.

Bearbeiten jeder Datei

Migrationsdatei

Dieses Mal werden die folgenden Informationen an die Tabelle auf dem neuen Registrierungsbildschirm gesendet.

ruby:db/migrate/025412010...


lass DeviseCreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name,               null: false
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      t.string :last_name,          null: false
      t.string :first_name,         null: false
      t.string :kana_last,          null: false
      t.string :kana_first,         null: false
      t.date   :birthday,           null: false
      ... (Kürzung)

Nachdem wir die Informationen, die wir für die Tabelle erstellt haben, im Voraus beschrieben haben, können wir die Benutzertabelle migrieren und vervollständigen.

% rails db:migrate

Fehler- und Validierungseinstellungen

Das in der Datei "app / views / devise / registrations / new.html.erb" beschriebene Formular sendet eine Anforderung an den Server und speichert sie in der Tabelle, überprüft und setzt jedoch Fehlermeldungen, um die Informationen korrekt zu speichern. ..

users.rb


class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  validates :name, presence: true
  validates :email, presence: true
  #Variable GÜLTIG_PASSWORD_Ersetzen Sie die Option, 6 oder mehr alphanumerische Zeichen mit halber Breite in REGEX zu verwechseln
  VALID_PASSWORD_REGEX = /\A(?=.*?[a-z])[a-z\d]{6,}+\z/
  validates :password, presence: true, length: { minimum: 6 }, format: { with: VALID_PASSWORD_REGEX}
  #Beschreiben Sie die Option, den Helfer in Hiragana, Katakana und Kanji in voller Breite eingeben zu lassen
  validates :last_name, :first_name, presence: true, format: { with: /\A(?:\p{Hiragana}|\p{Katakana}|[--- ---.]|[einer-龠])+\z/ }
  #Beschreiben Sie die Option zur Eingabe in Katakana in voller Breite
  validates :kana_last, :kana_first, presence: true, format: { with: /\A[\p{katakana}--- ---.&&[^ -~¡-゜]]+\z/ }
  validates :birthday, presence: true
end

Damit können die persönlichen Daten des Benutzers zum Zeitpunkt der Neuanmeldung im oben genannten Formular gespeichert werden.

ruby:application.controller.rb


class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :configre_permitted_parameters, if: :devise_controller?

  def configre_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :last_name, :first_name, :kana_last, :kana_first, :birthday])
  end
end

In der Methode configure_permitted_parameters, die nur bei der Verarbeitung des mit devise verbundenen Controllers funktioniert, Schlüssel: Wenn der Wert danach nicht eingegeben wird, kann er so verarbeitet werden, dass er nicht gespeichert werden kann. ** * Übrigens kann devise standardmäßig E-Mail und Passwort empfangen! ** ** **

Implementierung von Login / Out

Zu diesem Zeitpunkt müssen Sie lediglich die Anmelde- / Abmeldefunktion implementieren.

・ Header-Datei bearbeiten

devise/shared/header


#user_signed_in?Stellen Sie so ein, dass sich die Anzeige ändert, je nachdem, ob Sie angemeldet sind oder nicht.
      <% if user_signed_in? %>
        <li><%= link_to "#{current_user.name}", 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 %>

Sie können den Namen des angemeldeten Benutzers aus der DB-Spalte mit link_to " # {current_user.name} " abrufen.

Jetzt können Sie sich anmelden und registrieren, indem Sie eine Verbindung zu localhost: 3000 / users / sign_in oder users / sign_up herstellen.

Natürlich handelt es sich hierbei um Dateibearbeitungen im Zusammenhang mit devie. Bereiten Sie daher Ihren eigenen Controller vor und prüfen Sie auf der oberen Seite, ob Sie diese Funktionen verwenden können.

Wenn Sie eine Fehlermeldung erhalten, können Sie eine Verbindung herstellen, indem Sie den Server trennen und erneut verbinden. Versuchen Sie es also bitte.

Es wird die erste Veröffentlichung als Anfänger sein. Wenn Sie also ein falsches Verständnis haben oder mehr davon tun möchten, freuen wir uns immer darauf, von Ihnen zu hören.

Recommended Posts

Implementieren Sie Benutzerverwaltungsfunktionen mit Devise
Führen Sie devise with Rails ein, um Benutzerverwaltungsfunktionen zu implementieren
Implementieren Sie die Suchfunktion mithilfe der LIKE-Klausel
Implementierung der Benutzerauthentifizierungsfunktion mit devise (1)
Implementierung der Benutzerauthentifizierungsfunktion mit devise (3)
Benutzerregistrierung erstellen
Implementieren Sie Benutzerverwaltungsfunktionen in einem Assistentenformat
Flash-Nachricht mit Gerät
Implementieren Sie eine Bearbeitungsseite
Implementieren Sie die Benutzerregistrierungsfunktion und die Unternehmensregistrierungsfunktion separat in Rails devise
[Schienen] Implementieren Sie die Benutzersuchfunktion
Überall versuchten Freeter, Geräte zu benutzen.
Implementieren Sie die Kategoriefunktion mithilfe von Vorfahren