Używam Devise w aplikacji Rails 3, ale w tym przypadku użytkownik musi być utworzony przez istniejącego użytkownika, który określa, jakie uprawnienia będzie miał.
Z tego powodu chcę:
- Aby usunąć trasę dla użytkowników do rejestracji .
- Aby nadal zezwalać użytkownikom na edytowanie swoich profili (zmiana adresu e-mail i hasła) po zarejestrowaniu się
W jaki sposób mogę to zrobić?
Obecnie skutecznie usuwam tę trasę, umieszczając przed devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
To działa, ale wyobrażam sobie, że jest lepszy sposób, prawda?
Aktualizacja
Jak powiedział Benoit Garret, najlepszym rozwiązaniem w moim przypadku jest pominięcie masowego tworzenia tras rejestracji i utworzenie tych, które faktycznie chcę.
Aby to zrobić, najpierw uruchomiłem rake routes
, a następnie wykorzystałem dane wyjściowe do odtworzenia tych, które chciałem. Wynik końcowy był następujący:
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
Zauważ, że:
- Nadal mam
:registerable
w swoimUser
modelu devise/registrations
obsługuje aktualizację adresu e-mail i hasła- Aktualizowanie innych atrybutów użytkownika - uprawnień itp. - jest obsługiwane przez inny kontroler
Rzeczywista odpowiedź:
Usuń trasę dla domyślnych ścieżek Devise; to znaczy:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Zobacz moją odpowiedź poniżej.