[RAILS] 6 points de doute lorsque l'enregistrement de l'utilisateur n'est pas possible avec l'appareil

Jusqu'où êtes-vous allé

Il s'agit d'une liste de contrôle lorsque le formulaire n'est pas enregistré dans la base de données même s'il est rempli dans cet état. Je vais omettre les détails des colonnes existantes dans la table des utilisateurs.

1. Validation

Voyons si le modèle a des contraintes étranges.

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. Contraintes du fichier de migration

Voyons s'il y a des restrictions étranges lors de la création de la table.

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. Paramètres forts

devise n'a pas de paramètres forts, vous utiliserez donc plutôt devise_parameter_sanitizer. Il me manquait une colonne. Revoyons. Plus précisément, j'ai oublié d'autoriser la colonne e-mail, mais lorsque je l'ai exécutée dans le terminal, comme le montre cette image, elle a été ROLLBACKed après l'e-mail, alors j'ai remarqué quelque chose de suspect à ce sujet. ..

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. Association

Peu importe si une seule table est créée, mais s'il y a plusieurs tables, has_many pluriel, stretchs_to singular, etc.

5. nom de colonne de mot de passe

En fin de compte, c'était la cause. C'est une colonne de la table des utilisateurs dans devise (encryped_password par défaut), mais lorsque vous entrez le mot de passe et le mot de passe de form_with, vous devez écrire les noms de colonne comme password et password_confimation, respectivement. Ceci est dû au fait que l'appareil possède une fonction qui vérifie si password et password_confimation sont identiques et renvoie une chaîne cryptée àclos_password s'ils sont identiques. image.png

erreur

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

        <div class="field">
          <%= f.label :encryped_password, "Mot de passe (6 caractères ou plus)" %><br />
          <%= f.password_field :encryped_password, autocomplete: "new-password" %>
        </div>

        <div class="field">
          <%= f.label :encryped_password, "Retaper le mot de passe" %><br />
          <%= f.password_field :encryped_password, autocomplete: "new-password" %>
        </div>
Ce qui suit est omis

Bonne réponse

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

        <div class="field">
          <%= f.label :password, "Mot de passe (6 caractères ou plus)" %><br />
          <%= f.password_field :password, autocomplete: "new-password" %>
        </div>

        <div class="field">
          <%= f.label :password_confirmation, "Retaper le mot de passe" %><br />
          <%= f.password_field :password_confirmation, autocomplete: "new-password" %>
        </div>
Ce qui suit est omis

6. Causé par un logiciel de visualisation de base de données

Cela s'est produit ailleurs auparavant, mais il est possible que le logiciel qui visualise la base de données (Sequel Pro dans mon cas) ait été enregistré après le redémarrage, veuillez donc vérifier.

c'est tout

Recommended Posts

6 points de doute lorsque l'enregistrement de l'utilisateur n'est pas possible avec l'appareil
concevoir l'enregistrement des utilisateurs
Points à examiner lorsque Rubocop est lent à s'exécuter
[Pour les débutants] Testez l'enregistrement des utilisateurs avec RSpec
Impossible de déployer à chaud avec STS (Eclipse)
Que faire quand est invalide car il ne commence pas par un "-"
Passer à la page de confirmation lors de la déconnexion avec l'appareil
Une histoire sur l'impossibilité soudaine de regrouper l'installation en raison de gem'ffi '
[Ruby + Rails] Lorsque vous souhaitez vous inscrire dans la liste de diffusion de Mailchimp avec l'enregistrement de l'utilisateur
Lors de la modification des informations utilisateur à l'aide des paramètres du périphérique sur l'écran d'édition lorsque le mot de passe n'est pas enregistré
Que faire si l'application n'est pas créée avec la dernière version de Rails installée lorsque les rails sont neufs
Lorsque l'accès demandé à la ressource est refusé lors de la transmission avec Docker
Est-il possible de générer automatiquement Getter / Setter avec l'interface Java?
[Java] Points à noter avec Arrays.asList ()
[IOS] Que faire lorsque l'image est remplie d'une seule couleur
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
Remarques sur ce qu'il faut faire lorsque EC2 est configuré avec t2.micro
Lorsque j'essaye de m'inscrire avec devise, il redirige automatiquement vers root_path