J'utilise Devise dans une application Rails 3, mais dans ce cas, un utilisateur doit être créé par un utilisateur existant, qui détermine les autorisations dont il disposera.
Pour cette raison, je veux:
- Pour supprimer l'itinéraire pour que les utilisateurs s'inscrivent .
- Pour continuer à permettre aux utilisateurs de modifier leurs profils ( modifier leur adresse e-mail et leur mot de passe) après leur inscription
Comment puis-je faire ceci?
Actuellement, je supprime effectivement cet itinéraire en plaçant ce qui suit avant devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Cela fonctionne, mais j'imagine qu'il y a une meilleure façon, non?
Mettre à jour
Comme l'a dit Benoit Garret, la meilleure solution dans mon cas est de ne pas créer les routes d'inscription en masse et de simplement créer celles que je veux réellement.
Pour ce faire, j'ai d'abord couru rake routes
, puis utilisé la sortie pour recréer celles que je voulais. Le résultat final était le suivant:
devise_for :users, :skip => [:registrations]
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
Notez que:
- J'ai encore
:registerable
dans monUser
modèle devise/registrations
gère la mise à jour de l'email et du mot de passe- La mise à jour d'autres attributs utilisateur - autorisations, etc. - est gérée par un autre contrôleur
Réponse réelle:
Supprimez la route pour les chemins de Devise par défaut; c'est à dire:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Voir ma réponse ci-dessous.