[RUBY] So aktualisieren Sie Benutzerinformationen ohne Kennwort

Umgebung

ruby (2.6.5) rails(6.0.0) devise (4.7.2)

Implementierung der Seite zum Bearbeiten von Benutzerinformationen

Geben Sie zunächst das Linkziel an, damit die # Bearbeitung der gerouteten Benutzer / Registrierungen ausgeführt wird.

Prefix                 Verb   URI Pattern               Controller#Action
edit_user_registration GET    /users/edit(.:format)     users/registrations#edit

Wie unten beschrieben.

<%= link_to 'Meine Seite', edit_user_registration_path(current_user), class: "user-nickname" %>

Gerätesteuerung bearbeiten

Da die Funktion zum Aktualisieren von Daten ohne Kennwort in der Steuerung des Geräts implementiert ist, Generieren Sie eine Gerätesteuerung im Terminal.

$ rails g devise:controllers users

Bearbeiten Sie den generierten RegistrationsController wie folgt.

app>controllers>users>registrations_controlle.rb


class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_account_update_params, only: [:update]

  protected
  
  def update_resource(resource, params)
    resource.update_without_password(params)
  end

  def after_update_path_for(_resource)
    root_path
  end

  def configure_account_update_params
    devise_parameter_sanitizer.permit(:account_update, keys: [:nickname])
  end
end

Ich aktualisiere mit update_resource ohne Passwort. After_update_path_for gibt das Umleitungsziel nach der Aktualisierung an. In configure_account_update_params darf diesmal nur die Spalte mit dem Namen nickname in der Benutzertabelle aktualisiert werden.

Weitere Informationen finden Sie im offiziellen Wiki. https://github.com/heartcombo/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password

Ansichtsdatei des Geräts bearbeiten bearbeiten

Generieren Sie eine Geräteansichtsdatei im Terminal.

$ rails g devise:views

Bearbeiten Sie die Datei edit.html.view der generierten Ansichtsdatei so, dass nur das erforderliche Eingabeformular vorhanden ist.

erb:app>views>devise>registrations>edit.html.erb


<h2>Edit <%= resource_name.to_s.humanize %></h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %>
  <%= render "devise/shared/error_messages", resource: resource %>

  <div class="field">
    <%= f.label :nickname %><br />
    <%= f.text_field :nickname, autofocus: true, autocomplete: "nickname" %>
  </div>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
  </div>

  <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
    <div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
  <% end %>

  <div class="actions">
    <%= f.submit "Update" %>
  </div>
<% end %>

Routen bearbeiten.rb

Bearbeiten Sie wie folgt und geben Sie den Controller zum Zeitpunkt der Registrierung an.

routes.rb


devise_for :users, controllers: {
    registrations: 'users/registrations'
  }

Bearbeiten der Kennwortüberprüfung des Benutzermodells

Achten Sie beim Aktualisieren darauf, dass Sie nicht von der Kennwortüberprüfung betroffen sind Es wird wie bei :: create hinzugefügt. Mit dieser Beschreibung wird die Kennwortüberprüfung nur angewendet, wenn die Erstellungsaktion ausgeführt wird.

app>models>user.rb


  with_options presence: true do
    validates :nickname, :birthday
    validates :email, uniqueness: true
    validates :first_name, :last_name, format: { with: regexp_name }
    validates :first_name_read, :last_name_read, format: { with: regexp_name_read }
    validates :password, format: { with: regexp_password }, on: :create
  end

Durch die Implementierung des oben Gesagten konnten wir das Benutzermodell der Tabelle des Geräts ohne Kennwort aktualisieren. Vielen Dank für Ihren Besuch auf unserer Website.

Recommended Posts

So aktualisieren Sie Benutzerinformationen ohne Kennwort
So aktualisieren Sie Benutzeränderungen in Rails Devise, ohne ein Kennwort einzugeben
Es war überraschend einfach. So aktualisieren Sie Benutzerinformationen, ohne ein Kennwort einzugeben
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
So erstellen Sie eine Klasse, die Klasseninformationen erbt
Wie man einen Cache erstellt, ohne zu viel nachzudenken
Wie hinterlasse ich einen Kommentar?
So aktualisieren Sie mit activerecord-import
So fügen Sie ein Video ein
So erstellen Sie eine Methode
So geben Sie Array-Werte ohne Verwendung einer for-Anweisung aus
So verbinden Sie eine Tabelle ohne DBFlute und SQL
Wie man Spring Security authentifizierte Benutzerinformationen außer Benutzer-ID und Kennwort gibt und wie man darauf verweist
[Rails] Wie man Edelstein "devise" benutzt
[Schienen] Verwendung von Geräten (Hinweis)
[Rails] Anzeigen von Datenbankinformationen
So erstellen Sie einen Java-Container
Wie unterschreibe ich Minecraft MOD?
So erstellen Sie einen JDBC-Treiber
[Rails] [Devise] Profil bearbeiten, ohne Passwort einzugeben
[Swift] So senden Sie eine Benachrichtigung
So erstellen Sie einen Begrüßungsbildschirm
So erstellen Sie ein Jenkins-Plug-In
Speichern der im Textbereich eingegebenen Informationen in einer Variablen in der Methode
Wie erstelle ich ein Maven-Projekt?
So erstellen Sie ein Java-Array
[Rails 5] Anzeigen des Bildschirms zum Ändern des Kennworts bei Verwendung von devise
Anzeigen von Fehlermeldungen und Erfolgsmeldungen bei der Registrierung als Benutzer
[Rails] Verwenden Sie devise, um Informationen zum aktuell angemeldeten Benutzer abzurufen
[Rails] So übergeben Sie eine Validierung wie ein Kennwort, wenn Sie eine Aktualisierungsaktion ausführen
So führen Sie einen Vertrag mit web3j aus
So erstellen Sie eine Java-Kalenderzusammenfassung
Ein Memorandum zur Verwendung von Eclipse
[Basic] So schreiben Sie ein Dockerfile Selbstlernend ②
So fügen Sie ein Video in Rails ein
So fügen Sie einen neuen Hash / Array hinzu
[Einführung in Java] So schreiben Sie ein Java-Programm
So erstellen Sie ein Maven-Repository für 2020
Wie erstelle ich einen Discord Bot (Java)
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
[Swift5] So erstellen Sie einen Begrüßungsbildschirm
[Rails] So erstellen Sie eine Teilvorlage
So behandeln Sie Anmeldefehler mit devise
[Hinweis] Verwendung von Rails 6 Devise + Cancancan
So veröffentlichen Sie eine Bibliothek in jCenter
Hinzufügen von Informationen zur Anwendungsversion zu Sentry-Informationen