Да, определения маршрутов очень доступны. Следующий код должен получить вам список маршрутов для конкретного контроллера:
rts = ActionController::Routing::Routes.routes.reject do |rt|
rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id)
end
Вы можете запустить следующий код в консоли, чтобы увидеть маршруты:
rts = ActionController::Routing::Routes.routes.reject do |rt|
rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id)
end; nil
rts.each do |rt|
puts "Route: #{rt.segments}"
end; nil
Сегменты на самом деле также разбиты на массивы, что означает, что будет проще фильтровать список только по маршрутам, для которых требуется идентификатор пользователя.