Rails Controller переопределяет маршруты с пространством имен - PullRequest
0 голосов
/ 13 мая 2019

У меня есть приложение Rails с маршрутами, определенными с пространством имен;

routes.rb:

resources :customers do
  resources :employees do
    # [1] First absence controller
    resources :absences, only: %i{ index new create } do
      # omit verbose
    end
  end
end

scope module: :employee, path: :employee, as: :employee do
  # [2] Second absence controller
  resources :absences, only: %i{ index new create } do
    # omit verbose
  end
end

Выписка из rails routes -c absences:

                            Prefix Verb URI Pattern                                                                    Controller#Action
reported_customer_employee_absence POST /customers/:customer_id/employees/:employee_id/absences/:id/reported(.:format) absences#reported
        customer_employee_absences GET  /customers/:customer_id/employees/:employee_id/absences(.:format)              absences#index
                                   POST /customers/:customer_id/employees/:employee_id/absences(.:format)              absences#create
     new_customer_employee_absence GET  /customers/:customer_id/employees/:employee_id/absences/new(.:format)          absences#new
            avoid_employee_absence POST /employee/absences/:id/avoid(.:format)                                         employee/absences#avoid
                 employee_absences GET  /employee/absences(.:format)                                                   employee/absences#index
                                   POST /employee/absences(.:format)                                                   employee/absences#create
              new_employee_absence GET  /employee/absences/new(.:format)                                               employee/absences#new

Все работает как ожидалось в среде разработки и тестирования.

Но в производственной среде проблема заключается в том, что при вызове URL-адресов «сотрудник / отсутствующий» Rails запускает первый [1], а не второй [2] контроллер.

Мои версии:

 Env  | Ruby      | Rails   | Gem
--------------------------------------
 Dev  | 2.5.1p57  | 5.2.3   | 2.7.6
 Test | 2.5.6p159 | 5.2.2.1 | 2.7.6.2
 Prod | 2.3.3p222 | 5.2.3   | 2.5.2.1

- добавлено позже -

Возможно, это проблема с объявлением:

absences_controller.rb

class AbsencesController < ApplicationController
end

работник / absences_controller.rb

class Employee::AbsencesController < Employee::ApplicationController
end

Как employee/absence_controller.rb это первый контроллер в пространстве имен сотрудников, у которого возникла проблема или что-то в этом роде?

...