Sto usando Devise in un'app Rails 3, ma in questo caso, un utente deve essere creato da un utente esistente, che determina quali autorizzazioni avrà.
Per questo motivo, voglio:
- Per rimuovere il percorso per la registrazione degli utenti .
- Per consentire ancora agli utenti di modificare i loro profili (cambia indirizzo e-mail e password) dopo che hanno firmato
Come posso fare questo?
Attualmente, sto effettivamente rimuovendo questo percorso inserendo prima quanto segue devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Funziona, ma immagino che ci sia un modo migliore, giusto?
Aggiornare
Come ha detto Benoit Garret, la migliore soluzione nel mio caso è quella di saltare la creazione delle rotte di registrazione in massa e creare quelle che desidero davvero.
Per farlo, ho eseguito prima rake routes
, quindi ho usato l'output per ricreare quelli che volevo. Il risultato finale è stato questo:
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
Nota che:
- Ho ancora
:registerable
nel mioUser
modello devise/registrations
gestisce l'aggiornamento di e-mail e password- L'aggiornamento di altri attributi utente - autorizzazioni, ecc. - è gestito da un controller diverso
Risposta effettiva:
Rimuovere il percorso per i percorsi Devise predefiniti; vale a dire:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Vedi la mia risposta qui sotto.