Контроллеры с пространством имен Rails 3.2.3 переопределяются глобальными контроллерами с тем же именем

Когда глобальный контроллер приложения загружается первым, контроллер приложения с пространством имен не загружается при загрузке страниц в этом пространстве имен. Контроллер приложения выглядит так:

class ApplicationController < ActionController::Base
 protect_from_forgery
end

И контроллер приложения с пространством имен выглядит так:

class Admin::ApplicationController < ApplicationController

def authenticate_admin!
 if current_admin.nil?
  redirect_to new_admin_session_url
 end
end

private

 def current_admin
  @current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id]
 end

helper_method :current_admin
end

Когда мы используем before_filter "authenticate_admin!" примерно так:

class Admin::AssetsController < Admin::ApplicationController
  before_filter :authenticate_admin!
end

Выдается ошибка «NoMethodError in Admin::AssetsController#new». Это происходит только тогда, когда мы попадаем на глобальный маршрут перед маршрутом в пространстве имен. Если сервер перезапускается и сначала загружается маршрут с пространством имен, все работает правильно.

7
задан Bryan Ashley 5 June 2012 в 17:31
поделиться