Zuerst Ihr Modells before_destroy
Rückruf verwenden, wenn das Protokoll zu überprüfen kann zerstört werden (hier, wenn ein Student angemeldet ist):
Es ist c ommon und einfach und Sie tun es für jedes Modell, das Sie wollen.
Und hier ist ein Trick. Sie können einen allgemeinen Patch für alle Active-Admin-Ressourcen anwenden, um die Fehlernachricht Ihres Modells an den Benutzer als Rückruf ResourceController
zu übergeben. Es ist die check_model_errors
Methode unten. Und diese Methode muss als Callback während der Ausführung des Methodenaufrufs jeder Ressource ActiveAdmin.register
registriert werden (siehe Patch run_registration_block
). Sie können den folgenden Code einfach in eine neue Datei (beliebigen Namens) in den Ordner config/initializers
Ihrer App einfügen (oder in einen anderen Ordner, der beim Start der App initialisiert wird). Ich stelle es als config/initializers/active_admin_patches.rb
.
class ActiveAdmin::ResourceController
def check_model_errors(object)
return unless object.errors.any?
flash[:error] ||= []
flash[:error].concat(object.errors.full_messages)
end
end
class ActiveAdmin::ResourceDSL
alias_method :old_run_registration_block, :run_registration_block
def run_registration_block(&block)
old_run_registration_block(&block)
instance_exec { after_destroy :check_model_errors }
end
end
Das zweite Bit des Codes hier scheint Schienen automatisch für mich zu laden? Wenn ich den Code ändern und schlagen jede Seite, die ich die folgende Fehlermeldung erhalten 'undefined Methode 'controller' für nil: NilClass Extrahiert Quelle (um Zeile # 14): def run_registration_block (& Block) old_run_registration_block (& Block) instance_exec {after_destroy: check_model_errors} Ende' mit der Zeile instance_exec hervorgehoben. Passiert das für irgendjemand anderes? –