___ answer41355642 ___
Keine der googlefähigen Lösungen funktionierte, als ich sie ausprobierte. Das funktioniert
Was ich getan habe, war, eine neue Aktion im Controller und eine neue Route dafür zu erstellen und die Links in meinen Ansichten zu verbinden, die normalerweise eine Verbindung herstellen, um jetzt meine Route und Aktion aufzurufen.
Aber das war nicht genug. Da Devise zuhört und alle hinzugefügten Dateien anpackt, versuchen Sie es zu tun und validieren es durch seinen eigenen Code. Also füge ich einfach den neuen Benutzerdatensatz mit einer SQL-Einfügung hinzu.
Fügen Sie diese Route hinzu
%Vor%
Fügen Sie diese Aktion dem Benutzercontroller hinzu:
%Vor%
Anzeigen: new.html.erb
ändere das form_for, damit submit zur neuen route und aktion geht, nicht zum standard Rails.
%Vor%
___ qstnhdr ___ Ermöglicht Administratoren, Benutzer mit Devise hinzuzufügen
___ answer19018281 ___
Sie sollten Ihre eigene Methode :validate_admin
für before_action
implementieren, anstatt diese Aktion von :index
zu erben. Wie Sie sehen, überprüft die Methode in after_create
zuerst, ob Sie bereits eingeloggt sind, und kickt Sie zurück, wenn Sie es sind. Wenn Sie nicht angemeldet sind, wird ein %code% -Konto erstellt und Sie als dieser Benutzer angemeldet.
Sie versuchen, dieses Problem mit %code% zu umgehen, aber Ihr Formular ist wahrscheinlich %code% in %code% anstatt %code% . Sie müssen also eine Route hinzufügen, mit der Sie %code% für %code% :
erreichen können
%Vor%
Dann möchten Sie eine verkleinerte Version von %code% implementieren. Wahrscheinlich möchtest du etwas ähnliches:
%Vor%
Sie sollten auch sicherstellen, dass die Vorlage %code% das Formular auf die richtige Route verweist ( %code% ).
___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungsframework, das in Ruby geschrieben wurde. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung.
___ tag123devise ___ Devise ist ein Authentifizierungs-Juwel für Ruby-on-Rails. Es ersetzt frühere Lösungen wie Restful Authentication oder Authlogic.
___ qstntxt ___
Ich versuche es so zu machen, dass nur Admins Anwendungen mit Devise hinzufügen können. Ich habe es meistens bekommen aber jetzt arbeiten, wenn ich als Admin angemeldet und senden Sie das Formular anmelden es schlägt mich wieder mit dem Fehler: %code%
Ich habe versucht, die Anweisungen hier zu folgen. Ссылка aber es scheint nicht, diese Situation zu erwähnen
Muss ich in %code% noch etwas überschreiben, um dies zu ermöglichen?
Hier sind meine Routen ("Editoren" ist der Name meines Benutzermodells):
%Vor%
und mein %code% in "app / controllers /"
%Vor%
BEARBEITEN
Ich habe dieses %code% in den Protokollen bemerkt, als ich das Formular absende. Ich hatte vermutet, dass vielleicht das %code% wurde nicht genannt zu werden, aber davon ausgegangen, dass, weil das %code% aus wurde vererben %code% , dass vor Filter würde funktionieren. Ist das nicht der Fall?
___ answer4952578 ___
Hier wird Rails 4.2.6 verwendet (mein Modell ist User statt Editor). Die folgende Lösung umgeht (glaube ich) jegliche Geräteaktionen, die die neue Benutzererstellung durch den Administrator beeinträchtigen könnten:
Fügen Sie diese Aktion dem Benutzer-Controller hinzu:
%Vor%
Fügen Sie diese private Methode dem Benutzer-Controller hinzu, falls sie nicht existiert:
%Vor%
Fügen Sie dies config / routes.rb hinzu:
%Vor%
Fügen Sie diese Klassenmethode dem Benutzermodell hinzu:
%Vor%
Ich habe keine separate Admin-Klasse in meiner Anwendung. Stattdessen habe ich ein Admin-Attribut für Benutzer definiert und überprüfe es mit einem %code% %code% -Filter im UsersController.
Ich wollte in der %code% -Ansicht einen neuen Benutzer erstellen können, also habe ich eine Schaltfläche hinzugefügt:
%Vor%
Sie müssen möglicherweise die obige Lösung optimieren, wenn Sie im Benutzermodell %code% -Aktionen haben (z. B. Senden einer Willkommens-E-Mail).
___