У меня есть движок 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
.
Как избежать этой проблемы?
возможно дубликат [Rails класса загрузки скипов пространство имен класса, когда один класс с таким же именем в корневом пространстве имен загружен] (HTTP: //stackoverflow.com/questions/13236083/rails-class-loading-skips-namespaced-class-when-another-class-of-same-name-in-ro) –