Как в Ruby on Rails сгенерировать контроллер в определенном namespace?

Для генерации контроллеров в RoR используется следующая команда:

rails g controller controller_name

После ее выполнения мы получим все необходимые файлы (в моем случае используется slim вместо erb для view-представлений):

create  app/controllers/controller_name_controller.rb
invoke  slim
create    app/views/controller_name
invoke  test_unit
create    test/controllers/controller_name_controller_test.rb
invoke  helper
create    app/helpers/controller_name_helper.rb
invoke    test_unit
invoke  assets
invoke    coffee
create      app/assets/javascripts/controller_name.coffee
invoke    scss
create      app/assets/stylesheets/controller_name.scss
invoke  decorator
create    app/decorators/controller_name_decorator.rb
invoke    test_unit
create      test/decorators/controller_name_decorator_test.rb

В случаях, когда нам нужно удалить сгенерированный контроллер, мы используем "destroy" вместо "generate":

rails d controller controller_name

remove  app/controllers/controller_name_controller.rb
invoke  slim
remove    app/views/controller_name
invoke  test_unit
remove    test/controllers/controller_name_controller_test.rb
invoke  helper
remove    app/helpers/controller_name_helper.rb
invoke    test_unit
invoke  assets
invoke    coffee
remove      app/assets/javascripts/controller_name.coffee
invoke    scss
remove      app/assets/stylesheets/controller_name.scss
invoke  decorator
remove    app/decorators/controller_name_decorator.rb
invoke    test_unit
remove      test/decorators/controller_name_decorator_test.rb

В случаях с namespace, мы добавляем нужное пространство имен в нашу команду через слэш (для примера добавим admin) перед именем контроллера.

namespace_name/controller_name # порядок

Пример:

rails g controller admin/controller_name

create  app/controllers/admin/controller_name_controller.rb
invoke  slim
create    app/views/admin/controller_name
invoke  test_unit
create    test/controllers/admin/controller_name_controller_test.rb
invoke  helper
create    app/helpers/admin/controller_name_helper.rb
invoke    test_unit
invoke  assets
invoke    coffee
create      app/assets/javascripts/admin/controller_name.coffee
invoke    scss
create      app/assets/stylesheets/admin/controller_name.scss
invoke  decorator
create    app/decorators/admin/controller_name_decorator.rb
invoke    test_unit
create      test/decorators/admin/controller_name_decorator_test.rb

И обратное действие (удаление контроллера):

rails d controller admin/controller_name

remove  app/controllers/admin/controller_name_controller.rb
invoke  slim
remove    app/views/admin/controller_name
invoke  test_unit
remove    test/controllers/admin/controller_name_controller_test.rb
invoke  helper
remove    app/helpers/admin/controller_name_helper.rb
invoke    test_unit
invoke  assets
invoke    coffee
remove      app/assets/javascripts/admin/controller_name.coffee
invoke    scss
remove      app/assets/stylesheets/admin/controller_name.scss
invoke  decorator
remove    app/decorators/admin/controller_name_decorator.rb
invoke    test_unit
remove      test/decorators/admin/controller_name_decorator_test.rb
Наверх