Nous développons des applications originales. Je vais résumer ce que j'ai appris en créant une application.
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
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.
% rails g devise user
% rails g devise doctor
Plusieurs fichiers seront générés pour chacun.
% rails g devise:controllers users
% rails g devise:controllers doctors
Faites-en des contrôleurs (pluriel) et nommez-le (pluriel).
% 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.
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.