Wie entferne ich die Devise-Route zur Anmeldung?
Ich bin mit Entwickeln in eine Rails-3-Anwendung, aber in diesem Fall muss ein Benutzer erstellt werden, indem Sie einen vorhandenen Benutzer aus, wer legt fest, welche Berechtigungen er/Sie haben wird.
Weil dieses, ich will:
- Zu entfernen Sie die route für den Benutzer zu Unterschreiben,.
- Zu noch ermöglichen Benutzern das Bearbeiten Ihrer profile (ändern der E-Mail-Adresse und Passwort) nach Sie sich angemeldet haben,
Wie kann ich dies tun?
Derzeit bin ich effektiv entfernen diese route, indem Sie den folgenden vor devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Funktioniert, aber ich glaube, es gibt einen besseren Weg, richtig?
Update
Als Benoit Garret sagte, die beste Lösung in meinem Fall ist, überspringen Sie die Erstellung der Registrierungen Routen en masse und erstellen Sie einfach die, die ich eigentlich will.
Zu tun, dass ich das erste lief rake routes
dann verwendet die Ausgabe, neu zu erstellen die, die ich wollte. Das Ergebnis war dieses:
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
für die Aktualisierung E-Mail und Passwort- Aktualisierung anderer Benutzer-Attribute, Berechtigungen, etc - werden von einem anderen controller
Eigentliche Antwort:
Entfernen Sie die route für den Standard Auszuarbeiten, der Wege; d.h.:
devise_for :users, path_names: {
sign_up: ''
}
InformationsquelleAutor der Frage Nathan Long | 2011-07-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich versucht, dies zu tun als gut, aber ein thread über die google-Gruppe entwickeln davon abbringen mich von der Suche nach einem wirklich sauberen Lösung.
Ich zitiere José Valim (das Gerät Betreuer) :
Die ursprüngliche Frage war :
InformationsquelleAutor der Antwort Benoit Garret
können Sie dies in Ihrem Modell
ändern:
beachten Sie, dass das symbol
:registerable
entfernt wurdeDas ist es, nichts anderes erforderlich ist. Alle Routen und Verknüpfungen zu Registrierungs-Seite werden auf Magische Weise ebenfalls entfernt.
InformationsquelleAutor der Antwort stephenmurdoch
Ich hatte ähnliches Problem versucht zu entfernen, devise_invitable Pfade für erstellen und neue :
vor:
rake routes
nach
rake routes
Hinweis 1 erarbeiten Umfang https://github.com/plataformatec/devise#configuring-routes
note 2 ich bin es anwenden, auf devise_invitable aber es funktioniert mit jedem entwickeln, *verfügen über
Wichtiger Hinweis: sehen, dass devise_scope ist auf Benutzer nicht Benutzer ? das ist korrekt, watch out für diese ! Es kann dazu führen, viel Schmerzen geben Sie dieses problem:
InformationsquelleAutor der Antwort equivalent8
Fand ich ein weiterer Beitrag ähnlich wie diese ein und teilen möchte, eine Antwort @chrisnicola gab. In der post waren Sie versucht nur, Benutzer blockieren Anmeldung ist während der Produktion.
Könnte man auch ändern, die Anmeldungen controller. Sie können so etwas wie dies:
In "app/controllers/registrations_controller.rb"
Diese außer Kraft entwickeln, um den controller und die oben genannten Methoden statt. Sie fügten hinzu, flash-Mitteilungen für den Fall, dass jemand irgendwie machte es zu dem sign_up Seite. Sie sollten auch in der Lage sein zu ändern die Umleitung auf einen Pfad, den Sie mögen.
Auch in "config/routes.rb" können Sie diese:
Verlassen, wie dies ermöglicht es Ihnen, verwenden Sie die standard-entwickeln Ihr Profil Bearbeiten. Wenn Sie möchten, können Sie immer noch überschreiben, die "Profil Bearbeiten" - option, indem
in der "app/controllers/registrations_controller.rb"
InformationsquelleAutor der Antwort Daniel
Können Sie überschreiben die "devise_scope", indem Sie es vor dem "devise_for".
Nicht sicher, ob dies der beste Weg, aber es ist meine Lösung derzeit, wie es leitet nur wieder auf die Anmeldeseite.
InformationsquelleAutor der Antwort Midnight
Dies ist eine alte Frage - aber ich hatte vor kurzem lösen das gleiche Problem und kam mit einer Lösung, die weit mehr elegant als:
Und es gibt die Standard-Namen für die benannte Routen (wie
cancel_user_registration
), ohne übermäßig ausführlich.rake routes
Ausgabe mit dem Standard-entwickeln-Module:InformationsquelleAutor der Antwort max
Dazu in Strecken.rb
erhalten Sie eine Fehlermeldung jetzt, während Sie kommen zu der Seite anmelden um es zu beheben.
Dies ändern in: app/views/entwickeln/shared/_links.erb
InformationsquelleAutor der Antwort Syed
Mochte ich @max Antwortaber wenn Sie versuchen, zu verwenden es, ich lief in einen Fehler aufgrund
devise_mapping
als null.Ich veränderte seine Lösung leicht bis auf eine, die scheint das Problem zu beheben. Es erforderlich, die Verpackung der Aufruf
resource
innendevise_scope
.Beachten Sie, dass
devise_scope
erwartet, dass der singular:user
in der Erwägung, dassresource
erwartet, dass der plural:users
.InformationsquelleAutor der Antwort dvanoni
Für andere, die in meinem Fall.
Mit
devise (3.5.2)
.Ich erfolgreich entfernt die Routen nach der Anmeldung, behielt aber diejenigen, die zu Bearbeiten Sie das Profil, mit dem folgenden code.
InformationsquelleAutor der Antwort Micka
Ich habe festgestellt, dass dies gut funktionieren, ohne messing mit Routen oder das hinzufügen von application-controller-Methoden. Mein Ansatz ist das überschreiben der Methode entwickeln. Fügen Sie diese zu
app/controllers/devise/registrations_controller.rb
Habe ich es unterlassen die anderen Methoden, für die Kürze.
Ebenfalls zu entfernen illusion, dass dieser Weg noch erreichbar ist, von anderen Ansichten, die Sie vielleicht wollen Sie auch entfernen Sie diesen code aus
app/views/devise/shared/_links.erb
InformationsquelleAutor der Antwort lacostenycoder
Hier ist der etwas andere Weg, den ich ging. Es macht, so dass Sie nicht haben, um das überschreiben der
devise/shared/_links.html.erb
anzeigen.In
app/models/user.rb
:In
config/routes.rb
:Vor:
Nach:
InformationsquelleAutor der Antwort bmaddy
Ich hatte das gleiche Problem und ich fand es ein bisschen schlecht üben umleiten von Benutzern auf der Registrierungsseite. Also meine Lösung ist im Grunde nicht mit
:registrable
überhaupt.Was ich Tat, war zu erstellen, die eine ähnliche Seite wie Benutzerdaten Bearbeiten, das aussah wie:
So, in dieser form übermittelt in einem neuen post Ende Punkt, dass die updates das Passwort, welches wie folgt aussieht:
Später können Sie die
@result
in Ihren anzeigen, um dem Benutzer mitzuteilen, ob das Passwort aktualisiert wird oder nicht.InformationsquelleAutor der Antwort Sarp Kaya
Durch änderung der Strecken gibt es eine ganze Reihe anderer Probleme, die kommen mit, dass. Die einfachste Methode, die ich gefunden habe, ist Folgendes zu tun.
InformationsquelleAutor der Antwort Weston Ganger
Könnten Sie ändern die
devise
Edelstein selbst. Führen Sie zunächst diesen Befehl, um den Installationsort der Anwendung:gem which devise
Angenommen, der Pfad ist:
/usr/local/lib/ruby/gems/1.9.1/gems/devise-1.4.2/lib/devise
Dann gehen Sie zu
/usr/local/lib/ruby/gems/1.9.1/gems/devise-1.4.2/lib/devise/lib/devise/rails
und Bearbeitenroutes.rb
in diesem Verzeichnis. Es gibt eine Methode namensdef devise_registration(mapping, controllers)
die Sie ändern können, um loszuwerden, die neue Aktion. Sie kann auch komplett entfernen die Zuordnungen fürdevise_registration
InformationsquelleAutor der Antwort Ankit Soni