239 votes

Remplacer le contrôleur d'enregistrement des appareils

J'ai ajouté un champ au formulaire d'inscription qui est basé sur un modèle différent, cf. Comment utiliser des attributs imbriqués avec le modèle devise ? pour les détails sanglants. Cette partie fonctionne bien.

Le problème est que lorsque j'enregistre, cela échoue dans l'action de création du contrôleur d'enregistrements qui est fourni par devise avec un Activerecord::UnknownAttributeError sur ce champ (entreprise).

Je suppose que je dois remplacer le contrôleur des enregistrements, ou y a-t-il une meilleure façon de procéder ?

1 votes

En fait, j'ai écrit un article entier sur ce sujet jacopretorius.net/2014/03/

2voto

6ft Dan Points 285

Vous pouvez également rendre le dossier devise dans le chemin de vos contrôleurs et copier/coller l'intégralité du contrôleur devise dedans. Cela ne nécessite aucune configuration supplémentaire.

Ainsi, pour le seul contrôleur des enregistrements, il s'agirait de app/controllers/devise/registrations_controller.rb et ensuite copier la devise registrations_controller.rb source dans celui-ci. Vous pouvez le récupérer sur github https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb Vous pouvez également le retrouver dans le source de votre gemme, ou si vous utilisez RubyMine, lorsque vous tapez la ligne de la classe. class Devise::RegistrationsController un symbole ressemblant à un globe apparaît à gauche... cliquez dessus et cela ouvre le fichier du contrôleur d'enregistrement Devise pour vous. Puis copier/coller.

0voto

apb Points 902

J'ai atterri ici parce que j'essayais de personnaliser les paramètres que devise autorise lors de l'inscription.

J'ai utilisé cette réponse pour créer le contrôleur personnalisé, et a ensuite essayé de permettre l'attribut, timezone comme ça :

def configure_sign_up_params
  devise_parameter_sanitizer.permit(:sign_up, keys: [:timezone])
end

Ça n'a pas marché jusqu'à ce que je AUSSI décommenté la ligne en haut du contrôleur généré :

before_action :configure_sign_up_params, only: [:create]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X