#ruby-on-rails #ruby #routing
#ruby-on-rails #ruby #маршруты
Вопрос:
Я бы хотел, чтобы определенные маршруты rails были доступны только с localhost. Другими словами, если вы попытаетесь получить доступ к этому URL-адресу из нелокального соединения, вам будет выдан ответ, эквивалентный маршруту, которого не существует.
Оптимально, чтобы какой-то способ указания маршрутов как локальных в самом routes.rb был бы самым чистым решением, но если есть какой-то способ отфильтровать запрос позже, например, на уровне контроллера, это тоже нормально.
Ответ №1:
Если вы хотите указать, что эти URL-адреса существуют только в среде разработки, вы можете сделать просто:
if Rails.env.development?
#your routes
end
Но если к вашему серверу в режиме разработки обращаются другие пользователи, и вы хотите указать, что эти маршруты существуют только для локального хоста, тогда вы можете добавить ограничение для домена:
if Rails.env.development?
resources :users, constraints: { domain: 'localhost' }
end
Ответ №2:
Файл routes.rb
содержит специальный DSL для маршрутов, но это все еще ruby. Итак, вы пытались привести свои маршруты в простое состояние?
# routes.rb
if Rails.env.development?
# your special local routes definition
end
Комментарии:
1. Да, это более понятный способ. Спасибо ypu, я исправил свой пример кода.