[RUBY] Paramètres de routage depuis la création de fichiers lors de la création de plusieurs appareils et de la création d'écrans de connexion séparés

Nous développons des applications originales. Je vais résumer ce que j'ai appris en créant une application.

Créez plusieurs modèles avec l'utilisateur et le médecin, et créez de nouveaux écrans d'enregistrement et de connexion séparés. Normalement, puisqu'il s'agit d'un écran de connexion, les paramètres de routine, etc. sont automatiquement générés, mais si vous en faites deux, vous devrez personnaliser et résumer les difficultés.

ruby '2.6.5' rails '6.0.0'

Installez d'abord le dispositif.

  gem 'devise'

Installez-le.

  % bundle install

Redémarrez pour refléter la gemme.

  % rails s

Pour pouvoir utiliser devine, en plus d'installer Gem, il est nécessaire de créer un fichier de paramétrage avec une commande dédiée à la conception, utilisez donc une commande pour générer automatiquement des "fichiers utilisés pour le paramétrage".

   % rails g devise:install

Voici une personnalisation différente de celle habituelle.

1. Ajustez config / initializers / devise.rb.

Il y a config / initializers / devise.rb dans le fichier généré par rails g devise: install. De ce fichier

# config.scoped_views = false

cette

 config.scoped_views = true

Décommentez et changez en. C'est difficile à comprendre, mais je pense que c'est à la ligne 247.

2. Créez un modèle lié à chaque appareil.

   % rails g devise user
   % rails g devise doctor

Plusieurs fichiers seront générés pour chacun.

3. Créez un contrôleur associé à chaque modèle.

   % rails g devise:controllers users
   % rails g devise:controllers doctors

Faites-en des contrôleurs (pluriel) et nommez-le (pluriel).

4. Créez une vue associée à chaque appareil.

   % rails g devise:views users
   % rails g devise:views doctors

Vous venez de créer les fichiers associés au dispositif MVC.

Jusqu'à présent, c'est presque similaire à la création d'un modèle.

5. Ensuite, créez le routage.

   Rails.application.routes.draw do
  devise_for :doctors, controllers: {
    sessions: 'doctors/sessions',
    passwords: 'doctors/passwords',
    registrations: 'doctors/registrations'
  }
  devise_for :users, controllers: {
    sessions: 'users/sessions',
    passwords: 'users/passwords',
    registrations: 'users/registrations'  
  }

De cette manière, assurez-vous que chaque routage ne se chevauche pas.

En regardant le routage,


          Prefix Verb   URI Pattern                                                                              Controller#Action
                   new_doctor_session GET    /doctors/sign_in(.:format)                                                               doctors/sessions#new
                       doctor_session POST   /doctors/sign_in(.:format)                                                               doctors/sessions#create
               destroy_doctor_session DELETE /doctors/sign_out(.:format)                                                              doctors/sessions#destroy
                  new_doctor_password GET    /doctors/password/new(.:format)                                                          doctors/passwords#new
                 edit_doctor_password GET    /doctors/password/edit(.:format)                                                         doctors/passwords#edit
                      doctor_password PATCH  /doctors/password(.:format)                                                              doctors/passwords#update
                                      PUT    /doctors/password(.:format)                                                              doctors/passwords#update
                                      POST   /doctors/password(.:format)                                                              doctors/passwords#create
           cancel_doctor_registration GET    /doctors/cancel(.:format)                                                                doctors/registrations#cancel
              new_doctor_registration GET    /doctors/sign_up(.:format)                                                               doctors/registrations#new
             edit_doctor_registration GET    /doctors/edit(.:format)                                                                  doctors/registrations#edit
                  doctor_registration PATCH  /doctors(.:format)                                                                       doctors/registrations#update
                                      PUT    /doctors(.:format)                                                                       doctors/registrations#update
                                      DELETE /doctors(.:format)                                                                       doctors/registrations#destroy
                                      POST   /doctors(.:format)                                                                       doctors/registrations#create
                     new_user_session GET    /users/sign_in(.:format)                                                                 users/sessions#new
                         user_session POST   /users/sign_in(.:format)                                                                 users/sessions#create
                 destroy_user_session DELETE /users/sign_out(.:format)                                                                users/sessions#destroy
                    new_user_password GET    /users/password/new(.:format)                                                            users/passwords#new
                   edit_user_password GET    /users/password/edit(.:format)                                                           users/passwords#edit
                        user_password PATCH  /users/password(.:format)                                                                users/passwords#update
                                      PUT    /users/password(.:format)                                                                users/passwords#update
                                      POST   /users/password(.:format)                                                                users/passwords#create
             cancel_user_registration GET    /users/cancel(.:format)                                                                  users/registrations#cancel
                new_user_registration GET    /users/sign_up(.:format)                                                                 users/registrations#new
               edit_user_registration GET    /users/edit(.:format)                                                                    users/registrations#edit
                    user_registration PATCH  /users(.:format)                                                                         users/registrations#update
                                      PUT    /users(.:format)                                                                         users/registrations#update
                                      DELETE /users(.:format)                                                                         users/registrations#destroy
                                      POST   /users(.:format)                                                                         users/registrations#create

Ce sera. L'utilisateur et le médecin peuvent être acheminés séparément.

Dans form_with, l'utilisateur a pu accéder au nouvel écran d'inscription et à l'écran de connexion, mais j'ai écrit un article car le routage du médecin n'a pas réussi.

Recommended Posts

Paramètres de routage depuis la création de fichiers lors de la création de plusieurs appareils et de la création d'écrans de connexion séparés