Обратите внимание, что вы в настоящее время называете modules
на самом деле namespaces
.
Причина, по которой controller_name
возвращает только имя класса (а не полное имя), заключается в том, что Rails явно удаляетПространства имен.Вы можете получить их, вызвав метод Ruby #name
в классе контроллера.
class SoapTest::DashboardController < ApplicationController
before_filter :check_company_features
def check_company_features
puts controller_name
# => "dashboard_controller"
puts self.class.name
# => "SoapTest::DashboardController"
end
end
Есть несколько методов перегиба String, которые вы можете вызвать на #name
, чтобы получить отформатированную версию.
Однако я настоятельно рекомендую вам использовать основной контроллер с пространством имен.Вместо использования
class SoapTest::DashboardController < ApplicationController
вы можете расширить SoapTest::ApplicationController
class SoapTest::ApplicationController < ApplicationController
before_filter :check_company_features
def check_company_features
# ...
end
end
class SoapTest::DashboardController < SoapTest::ApplicationController
end