[RAILS] 6 Punkte zu bezweifeln, wenn eine Benutzerregistrierung mit devise nicht möglich ist

Wie weit bist du gegangen?

Dies ist eine Checkliste, wenn das Formular nicht in der Datenbank gespeichert ist, auch wenn es in diesem Zustand ausgefüllt ist. Ich werde die Details darüber weglassen, welche Spalten in der Benutzertabelle vorhanden sind.

1. Validierung

Mal sehen, ob das Modell seltsame Einschränkungen hat.

user.rb


  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
         validates :name, presence: true
         validates :profile, presence: true
         validates :occupation, presence: true
         validates :position, presence: true

2. Einschränkungen für Migrationsdateien

Mal sehen, ob es beim Erstellen der Tabelle merkwürdige Einschränkungen gibt.

devise_create_users.rb


      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      t.string :name
      t.text :profile
      t.text :occupation
      t.text :position

3. Starke Parameter

devise hat keine starken Parameter, daher verwenden wir stattdessen devise_parameter_sanitizer. Mir fehlte eine Spalte. Lassen Sie uns überprüfen. Insbesondere habe ich vergessen, die E-Mail-Spalte zuzulassen, aber als ich sie im Terminal ausführte, wie in diesem Bild gezeigt, wurde sie nach der E-Mail rückgängig gemacht, sodass ich etwas Verdächtiges daran bemerkte. ..

image.png

application_controller.rb


class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  private
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [ :email, :encrypted_password, :name, :profile, :occupation, :position])
  end
end

4. Verein

Es spielt keine Rolle, ob nur eine Tabelle erstellt wird, aber wenn es mehrere Tabellen gibt, has_many Plural, stretchs_to Singular usw.

5. Name der Passwortspalte

Am Ende war dies die Ursache. Es ist eine Spalte der Benutzertabelle in devise (standardmäßig encryped_password). Wenn Sie jedoch form_with password und password erneut eingeben, müssen Sie die Spaltennamen als password bzw. password_confimation schreiben. Dies liegt daran, dass devise über eine Funktion verfügt, die überprüft, ob Kennwort und Kennwortkonfiguration identisch sind, und eine verschlüsselte Zeichenfolge an eingeschlossenes Kennwort zurückgibt, wenn sie identisch sind. image.png

Fehler

        <%= form_with model: @user, url: user_registration_path, local: true do |f| %>

        <div class="field">
          <%= f.label :encryped_password, "Passwort (6 Zeichen oder mehr)" %><br />
          <%= f.password_field :encryped_password, autocomplete: "new-password" %>
        </div>

        <div class="field">
          <%= f.label :encryped_password, "Kennwort erneut eingeben" %><br />
          <%= f.password_field :encryped_password, autocomplete: "new-password" %>
        </div>
Folgendes wird weggelassen

Richtige Antwort

        <%= form_with model: @user, url: user_registration_path, local: true do |f| %>

        <div class="field">
          <%= f.label :password, "Passwort (6 Zeichen oder mehr)" %><br />
          <%= f.password_field :password, autocomplete: "new-password" %>
        </div>

        <div class="field">
          <%= f.label :password_confirmation, "Kennwort erneut eingeben" %><br />
          <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
        </div>
Folgendes wird weggelassen

6. Verursacht durch Datenbankvisualisierungssoftware

Es ist schon woanders passiert, aber es ist möglich, dass die Software, die die Datenbank visualisiert (in meinem Fall Sequel Pro), nach dem Neustart tatsächlich gespeichert wurde. Überprüfen Sie dies daher bitte.

das ist alles

Recommended Posts

6 Punkte zu bezweifeln, wenn eine Benutzerregistrierung mit devise nicht möglich ist
Benutzerregistrierung erstellen
Zu überprüfende Punkte, wenn Rubocop nur langsam ausgeführt wird
[Für Anfänger] Testen Sie die Benutzerregistrierung bei RSpec
Kann mit STS (Eclipse) nicht heiß bereitgestellt werden
Was zu tun ist, wenn es ungültig ist, weil es nicht mit einem '-' beginnt
Beim Abmelden mit devise zur Bestätigungsseite wechseln
Eine Geschichte darüber, dass die Installation aufgrund von gem'ffi 'plötzlich nicht mehr gebündelt werden kann.
[Ruby + Rails] Wenn Sie sich zusammen mit der Benutzerregistrierung in der Mailchimp-Mailingliste registrieren möchten
Wenn Sie Benutzerinformationen mithilfe der Geräteeinstellungen auf dem Bearbeitungsbildschirm ändern, wenn das Kennwort nicht gespeichert ist
Was tun, wenn die App nicht mit der neuesten Rails-Version erstellt wurde, die bei neuen Rails installiert wurde?
Auf Anforderung wird der Zugriff auf die Ressource beim Push mit Docker verweigert
Ist es möglich, Getter / Setter automatisch mit Java Interface zu generieren?
[Java] Mit Arrays.asList () zu beachtende Punkte
[IOS] Was tun, wenn das Bild mit einer Farbe gefüllt ist?
[Rails] So erhalten Sie die aktuell mit devise angemeldeten Benutzerinformationen
Hinweise zur Vorgehensweise bei der Einrichtung von EC2 mit t2.micro
Wenn ich versuche, mich bei devise anzumelden, wird automatisch zu root_path umgeleitet