У меня есть приложение Rails 3, скажем, с отелями, где отели принадлежат родительским областям. Когда пользователь запускает приложение (обслуживается mongrel >> nginx), я хочу, чтобы доменное имя, использованное в запросе, решало, какую зону отелей обслуживать (доменное имя >> зона). Для этого я вижу два варианта:
1) Перепишите URL с помощью nginx, вставив идентификатор области после имени домена (например, birminghamhotels.co.uk => proxy_pass http://myupstream/areas/3$request_uri).
Преимущества: Сопоставление доменов и объектов происходит там, где определены принятые домены: nginx.conf. Должен быть прозрачным для пользователей (красивые URL возможны, так как они переписаны).
Недостатки: Перерывы в Rails-помощниках URL, больше нет link_to или form_for. Жестко запрограммированная ссылка на объект является непослушной.
2) Поймайте доменное имя в Routes.rb и ищите Район с помощью уникального атрибута «домен» для каждого Района (или даже has_many, если хотите).
Преимущества: Следует разрешить использование всех URL-помощников Rails. Запрашиваемый домен связан напрямую с ресурсом, поэтому исключения могут быть обработаны.
Недостатки: Без перезаписи URL с помощью nginx пользователи не увидят: birminghamhotels.co.uk/areas/3/hotels/42 вместо просто birminghamhotels.co.uk/hotels/42? Кроме того, я понятия не имею, как это сделать!
Итак, я попробовал вариант № 1, но столкнулся с проблемами с помощниками URL и т. Д. Я пытался найти способ попробовать вариант № 2, но не смог найти правильный синтаксис, несмотря на то, что много глазного Теперь тот факт, что я не могу найти какие-либо ответы путем поиска, заставляет меня думать, что я получил неправильный конец этой проблемы. Есть ли третий вариант? Как бы вы решили это?
Да, и между прочим, я не создаю еще один веб-сайт с перечнем отелей - их уже достаточно. Просто оказалось достаточно близким примером.