Créer une application originale.
ruby '2.6.5' rails '6.0.0'
Tout d'abord, comme condition préalable, commencez par les paramètres de routage, de modèle, de contrôleur et de vue de chaque appareil. Veuillez vous référer à ici pour la méthode de création ci-dessus.
Maintenant, normalement, s'il y a un appareil pour une application, utilisez before_action dans le fichier application_controller.rb pour traiter devise_parameter_sanitizer.
app/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: [:nickname])
end
end
De cette manière, vous pouvez autoriser une colonne spécifique lors de l'enregistrement en tant qu'utilisateur.
Cette fois, j'ai fabriqué deux appareils, un utilisateur et un médecin.
Tout d'abord, c'est dans le README du référentiel, alors je l'ai essayé, mais ça ne sort pas très bien. Je ne savais pas s'il fallait créer un fichier pour hériter ou utiliser un fichier existant.
En conséquence, il existe un fichier individuel app / controllers / users / registrations_controller.rb, alors utilisez-le.
Pour l'utilisateur
app/controllers/users/registrations_controller.rb
Pour le docteur
app/controllers/doctors/registrations_controller.rb
Trouvez la description suivante dans le grand nombre de commentaires dans le fichier utilisateur.
app/controllers/users/registrations_controller.rb
# before_action :configure_sign_up_params, only: [:create]
Activer les commentaires pour. . ↓
app/controllers/users/registrations_controller.rb
before_action :configure_sign_up_params, only: [:create]
Désormais, lors de la création d'un utilisateur, Maintenant que configure_sign_up_params est appelé Dans le même fichier, def configure_sign_up_params Commentez et activez-le.
app/controllers/users/registrations_controller.rb
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
end
Et écrivez le karamu que vous souhaitez ajouter à cette partie (: sign_up, keys: [: nickname]).
app/controllers/users/registrations_controller.rb
def configure_sign_up_params
devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :password])
end
Le docteur fera le même travail. Le fichier est app / controllers / doctor / registrations_controller.rb.
Comme certains d'entre vous l'ont peut-être remarqué, devise_parameter_sanitize n'est pas écrit dans app / controllers / application_controller.rb car il n'est pas défini dans le contrôleur d'application et est appelé par before_action dans un fichier individuel.
Lorsque vous faites ce qui précède
TypeError
superclass mismatch for class DoctorController
class DoctorController < ApplicationController
J'ai une erreur. Si vous regardez de près, class DoctorController <ApplicationController est Doctor.
class DoctorController < ApplicationController
class DoctorsController < ApplicationController
Puisqu'il hérite de app / controllers / doctor / registrations_controller.rb, il n'y a pas de "" s "", alors décrivez-le.
Veuillez noter que les rails ont des règles de dénomination strictes! !!
Recommended Posts