2015-01-27 3 views
0

У меня есть движок Admin и несколько контроллеров.Пространства имен и наследование в рельсах

# admin/app/controllers/admin/application_controller.rb 
module Admin 
    class ApplicationController < ActionController::Base 
    end 
end 

# admin/app/controllers/admin/foo_controller.rb 
module Admin 
    class CardsController < ApplicationController 
    end 
end 

# app/controllers/application_controller.rb 
class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
end 

Если я посещаю мое главное приложение, а затем/администрировать CardsController наследует от ApplicationController НЕ Admin::ApplicationController. Если я впервые посетил/admin, а затем основное приложение, оно работает.

Я предполагаю, что при первом посещении основного приложения создается константа ApplicationController, которая затем находит и используется при посещении/admin вместо загрузки Admin::ApplicationController.

Как избежать этой проблемы?

+0

возможно дубликат [Rails класса загрузки скипов пространство имен класса, когда один класс с таким же именем в корневом пространстве имен загружен] (HTTP: //stackoverflow.com/questions/13236083/rails-class-loading-skips-namespaced-class-when-another-class-of-same-name-in-ro) –

ответ

2

Вы должны быть конкретными о том, какой класс вы унаследовав от:

module Admin 
    class CardsController < Admin::ApplicationController 
    # ... 
    end 
end 
Смежные вопросы