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.
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
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
Cette fois, nous allons générer des modèles pour l'utilisateur et l'entreprise.
% rails g devise user
% rails g devise company
% rails g devise:controllers users
% rails g devise:controllers companies
% rails g devise:views users
% rails g devise:views companies
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.
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.
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.
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