[RUBY] Implémenter la fonction d'enregistrement des utilisateurs et la fonction d'enregistrement de l'entreprise séparément dans Rails concevoir

J'apprends la programmation depuis un mois et demi.

Je voulais faire une application de correspondance BtoC par développement personnel, et j'ai réalisé que je devais enregistrer B et C pour le moment, donc même si j'étais un débutant, je l'ai implémentée avec beaucoup de recherche, alors j'aimerais laisser un article en sortie. ..

Ici, l'utilisateur et l'entreprise génèrent et implémentent des tables de gestion séparées.

1. Introduction de la devise

Tout d'abord, écrivez devise dans le Gemfile et le bundle install.

Ensuite, installez l'appareil tel quel dans le terminal.

% rails g devise:install

2. Modifiez /config/initializers/devise.rb

Il existe différents codes, mais peut-être que la ligne 247? (J'étais la ligne 247) est commentée, Modifiez la description qui dit config.scoped_views = false. Le commentaire est également supprimé comme suit.

/config/initializers/devise.rb


  # ==> Scopes configuration
  # Turn scoped views on. Before rendering "sessions/new", it will first check for
  # "users/sessions/new". It's turned off by default because it's slower if you
  # are using only default views.
  config.scoped_views = true

3. Générer un modèle lié au dispositif

Cette fois, nous allons générer des modèles pour l'utilisateur et l'entreprise.

% rails g devise user
% rails g devise company

4. Générer un contrôleur lié à chaque modèle généré

% rails g devise:controllers users
% rails g devise:controllers companies

5. Générer une vue associée

% rails g devise:views users
% rails g devise:views companies

6. Paramètres de routage

Vous pouvez désormais gérer en toute sécurité à la fois l'utilisateur et l'entreprise avec un appareil. Cependant, comme c'est le cas, si vous vérifiez le routage, il y aura des parties en double dans la description de Controller # Action, alors changez-le un peu.

/config/routes.rb


  devise_for :companies, controllers: {
    sessions:      'companies/sessions',
    passwords:     'companies/passwords',
    registrations: 'companies/registrations'
  }
  devise_for :users, controllers: {
    sessions:      'users/sessions',
    passwords:     'users/passwords',
    registrations: 'users/registrations'
  }

C'est acceptable.

7. Supprimer les vues inutilisées

Dans le processus de la procédure jusqu'à présent, un fichier de vue qui n'est plus utilisé a été généré, supprimez-le.

% rails d devise:views

L'implémentation elle-même est terminée ci-dessus, mais je n'étais pas sûr de la description des paramètres forts etc. au moment de la nouvelle inscription, donc je vais vous expliquer en me basant sur un exemple que j'ai étudié et réussi à ma manière.

8. Définissez des paramètres forts

Jusqu'à présent, lorsqu'il y avait un modèle de périphérique, s'il y avait une colonne ajoutée, elle était définie dans application_controller.rb comme suit.

/controllers/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: [:name])
  end
end

Cependant, comme il y a deux modèles cette fois, je ne sais pas comment le paramétrer, j'ai donc décidé de le paramétrer avec chaque contrôleur lié à chaque modèle généré par devise au lieu de application_controller.

Fondamentalement, vous devez simplement ** décommenter la partie pertinente et ajouter une colonne arbitraire au tableau de clés autorisé **.

/controllers/users/registrations_controller.rb


class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_sign_up_params, only: [:create]

  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :email, :password, :phone_number, :detail])
  end
end

/controllers/companies/registrations_controller.rb


class Companies::RegistrationsController < Devise::RegistrationsController
  before_action :configure_sign_up_params, only: [:create]

  def configure_sign_up_params
    devise_parameter_sanitizer.permit(:sign_up, keys: [:company_name, :email, :password, :phone_number, :office_url])
  end
end

c'est tout. Avec cela, si vous enregistrez la valeur dans chaque fichier de vue, les données seront enregistrées en toute sécurité et vous pouvez maintenant implémenter des fonctions telles que la connexion et la déconnexion.

Notez que vous devez avoir deux vues du formulaire, utilisateur et société. Eh bien, c'est un modèle partiel et cela n'a pas d'importance.

finalement

Merci pour la lecture. Le premier message de Qiita et je n'ai pas encore compris la notation de démarque en détail, donc cela a peut-être été un peu difficile à lire.

Si vous avez des commentaires, n'hésitez pas à nous contacter. Nous l'utiliserons pour des améliorations à partir de la prochaine fois.

Recommended Posts

Implémenter la fonction d'enregistrement des utilisateurs et la fonction d'enregistrement de l'entreprise séparément dans Rails concevoir
Implémenter la fonction d'application dans Rails
[Rails] Implémenter la fonction de recherche d'utilisateurs
[Rails] Implémentez la fonction d'enregistrement / suppression de carte de crédit dans PAY.JP
Introduire la conception avec Rails pour implémenter la fonctionnalité de gestion des utilisateurs
Implémentez la fonction de connexion dans Rails simplement avec le nom et le mot de passe (1)
Implémentez la fonction de connexion dans Rails simplement avec juste un nom et un mot de passe (2)
Implémenter une fonction de connexion simple dans Rails
Implémenter la fonction de téléchargement CSV dans Rails
Implémentez la fonction de connexion simplement avec le nom et le mot de passe dans Rails (3)
[Rails] Implémentation d'une nouvelle fonction d'enregistrement au format assistant à l'aide de devise
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
concevoir l'enregistrement des utilisateurs
Créer une fonction d'authentification dans l'application Rails à l'aide de devise
Utilisez [Rails] pour concevoir la fonction utilisateur invité (pour le portefeuille)
Mettre en œuvre la fonction de classement par étoiles en utilisant Raty dans Rails 6
Markdown implémenté dans Rails
Implémenter la fonction de recherche de publication dans l'application Rails (méthode where)
[Rails6] concevoir + paranoïa + à la fois suppression logique utilisateur et contraintes uniques réalisées dans la série MySQL8
Poteaux Rails et liaison utilisateur
Implémenter l'authentification LTI dans Rails
[Rails] Implémenter la fonction de publication d'images
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
[Procédure d'implémentation] Créer une fonction d'authentification utilisateur à l'aide de sorcellerie dans Rails
[Rails] Ajoutez un écran de confirmation et un écran de fin pour concevoir l'inscription des membres.
Les rails 6 (avec Webpacker en standard) implémentent la fonction de classement par étoiles
[Rails] Paramètre de délai d'expiration de session dans l'appareil
Ajoutez une fonction de recherche dans Rails.
Activer jQuery et Bootstrap dans Rails 6 (Rails 6)
[rails] Implémentation de l'écran de connexion dans la devise
[Rails] Erreur de validation inattendue dans l'appareil
[Rails] Implémentation de la fonction de retrait utilisateur
Implémenter la fonction PHP implode en Java
[Rails] Fonction de commentaire (enregistrement / affichage / suppression)
Implémenter un formulaire de contact dans Rails
Supprimez les "actifs" et les "turbolinks" dans "Rails6".
Fonction CRUD et MVC dans Rails
Implémentez la connexion, l'enregistrement des utilisateurs et l'authentification à deux facteurs avec Docker x Laravel 8 Jetstream
Comment mettre à jour les modifications utilisateur dans Rails Devise sans entrer de mot de passe
[Rails 6] Enregistrez-vous et connectez-vous avec l'authentification Devise + SNS (plusieurs liens sont autorisés)
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
Comment mettre en œuvre la fonction d'authentification du courrier au moment de l'inscription de l'utilisateur
Comment implémenter la fonctionnalité de recherche dans Rails
Rails Ajout d'une fonction de connexion facile et facile
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (1)
Fonction d'authentification avec Play Framework [Enregistrement et authentification]
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (3)
Comment implémenter la fonctionnalité de classement dans Rails
Implémenter des transitions de boutons à l'aide de link_to dans Rails
[Rails6] Comment connecter la fonction d'affichage générée par Scaffold avec la fonction utilisateur générée par devise