Ссылки в принятом ответе на самом деле не дает пример для переопределяет контроллер. Они упоминают «открытый класс» файла, но не объясняют, как именно это сделать. Если вы откроете класс двигателя в своем приложении, вы получите ошибку циклической зависимости, потому что вы ссылаетесь на/открываете класс, который в настоящее время находится в процессе определения. Поэтому вам нужно сначала убедиться, что вы загрузите фактический класс двигателя.
# 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
В моем случае, я использую Blazer камень и добавление к нему аутентификации. Поскольку я использую декларативное разрешение, которое Blazer не поддерживает напрямую, мне нужно открыть базовый контроллер Blazer и добавить к нему мое требование авторизации.
Посмотрите там http://stackoverflow.com/questions/5045068/extending-controllers-of-a-rails-3-engine-in-the-main-app – Andrei