Ich verwende Devise in einer Rails 3-App. In diesem Fall muss ein Benutzer von einem vorhandenen Benutzer erstellt werden, der bestimmt, über welche Berechtigungen er verfügt.
Aus diesem Grund möchte ich:
- So entfernen Sie die Route, auf der sich Benutzer anmelden können .
- Um immer noch zu erlauben , Benutzer zu bearbeiten ihre Profile (ändern E - Mail - Adresse und Passwort) , nachdem sie haben unterschrieben
Wie kann ich das machen?
Derzeit entferne ich diese Route effektiv, indem ich Folgendes vorstelle devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Das funktioniert, aber ich stelle mir vor, es gibt einen besseren Weg, oder?
Aktualisieren
Wie Benoit Garret sagte, besteht die beste Lösung in meinem Fall darin, das Erstellen der Registrierungsrouten in Massen zu überspringen und nur die zu erstellen, die ich tatsächlich möchte.
Dazu habe ich zuerst ausgeführt rake routes
und dann die Ausgabe verwendet, um die gewünschten neu zu erstellen. Das Endergebnis war folgendes:
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
Beachten Sie, dass:
- Ich habe noch
:registerable
in meinemUser
Modell devise/registrations
kümmert sich um die Aktualisierung von E-Mail und Passwort- Das Aktualisieren anderer Benutzerattribute - Berechtigungen usw. - wird von einem anderen Controller durchgeführt
Aktuelle Antwort:
Entfernen Sie die Route für die Standardpfade. dh:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Siehe meine Antwort unten.