Der Link ein Beispiel eine Steuerung zum Überschreiben nicht wirklich bieten:
Beispiele sind zu tun, sind hier zu finden. Sie erwähnen "Open Classing" der Datei, aber nicht wie genau es zu tun ist. Wenn Sie die Engine-Klasse in Ihrer App öffnen, erhalten Sie einen zirkulären Abhängigkeitsfehler, weil Sie eine Klasse referenzieren/öffnen, die gerade definiert wird. Daher müssen Sie sicherstellen, dass Sie zuerst die tatsächliche Klasse des Motors laden.
# in my app
# app/controllers/blazer/base_controller.rb
load Blazer::Engine.root.join('app/controllers/blazer/base_controller.rb')
Blazer::BaseController.class_eval do
filter_access_to :all
end
In meinem Fall bin ich mit dem Blazer Juwel und das Hinzufügen von Authentifizierung zu. Da ich eine deklarative Autorisierung verwende, die der Blazer nicht direkt unterstützt, muss ich Blazers Basis-Controller öffnen und meine Autorisierungsanforderung hinzufügen.
Schauen Sie dort http://stackoverflow.com/questions/5045068/extending-controllers-of-rails-3-engine-in-the-main-app – Andrei