Когато глобалният контролер на приложението се зарежда първи, контролерът на приложението с пространство от имена не се зарежда при зареждане на страници в това пространство от имена. Контролерът на приложението изглежда така:
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 в Admin::AssetsController#new“. Това се случва само когато достигнем глобалния маршрут преди маршрута с пространство от имена. Ако сървърът се рестартира и първо се зареди маршрутът с пространство от имена, всичко работи правилно.