Ich versuche, die Devise-Methode set_flash_message
zu überschreiben. Die Dokumentation enthält Informationen zu override controllers for the various submodules.DeviseController-Basisklasse überschreiben - Rails 4, Devise 3
Allerdings ist diese besondere Methode innerhalb DeviseController
, die Elternklasse Klasse aller Module befindet.
Die Dokumentation (sowohl Wiki als auch Inline) sagt nichts darüber aus, wie dies zu erreichen ist, also bin ich mir nicht sicher, wie ich am besten vorgehen soll. Ich glaube, der beste Weg wäre, die Klasse einfach wieder zu öffnen und die Methode nach Bedarf zu modifizieren, und dazu habe ich eine Datei in /lib
platziert. Es scheint jedoch, dass es vor Devise geladen wird, was zu einem Fehler führt.
NameError in Devise::RegistrationsController#new
undefined local variable or method `require_no_authentication' for #<Devise::RegistrationsController>
Die komplexe Mutter Definition für DeviseController
auch einen negativen Nettoeffekt sein, die kann:
class DeviseController < Devise.parent_controller.constantize
Gedanken?
Gibt es einen Grund, warum Sie nicht einfach die Funktionsdefinition in Ihrem Controller überschreiben können? –
Es gibt keinen "meinen" Controller, Devise stellt die Controller für Sie bereit. Sie können sie überschreiben (siehe zweiter Link oben), aber das gilt nur für die Unterklassen, die die Module von Devise repräsentieren. –
Wenn Sie Devise nicht abzweigen wollen, müssen Sie Ihre eigenen Controller erstellen und die Methode überschreiben. –