URL-маршрутизация для многопользовательского приложения RoR на основе пути - PullRequest
3 голосов
/ 04 февраля 2012

Я реализую мультитенантное приложение RoR. Арендаторы идентифицируются с использованием первого сегмента пути в качестве идентификатора клиента вместо поддоменов. Насколько я понимаю, getsatisfaction.com реализует этот вид многопользовательской маршрутизации. Пример:

http://myapp.com/tenant1/resource вместо http://tenant1.myapp.com, http://tenant2.myapp.com

Я хочу реализовать следующее поведение маршрутизации

get the tenant part from myapp.com/segement1/resource
if [segment1] has an entry in our db as a tenant
    then set base_url as [http://myapp.com/segment1], and do the route lookup for /resource
else
    set base_url as [http://myapp.com/] and do the route lookup for /segment1/resource

Для иллюстрации

http://myapp.com/login will not match any tenant, hence will login to the site
http://myapp.com/org1/tasks will match a tenant named org1, get the 'tasks' of org1
http://myapp.com/tasks will not many any tenant, get the task of all orgs

Я пытался прочитать RoR rout.rb, переписать URL, apache, но не смог найти лучший способ сделать это Любые указатели о том, как реализовать это?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2013

Вы можете попробовать определить некоторые маршруты:

resources :tasks

scope ':tenant' do
  root to: 'dashboard#index', as: 'dashboard'
  resources :tasks
end

В вашем TasksController вы получите переменную param [: tenant], которую можно использовать для поиска арендатора.Если param [: tenant] равен nil, вы можете просто вернуть все задачи.

0 голосов
/ 04 февраля 2012

Вы можете сделать это, сделав

http://myapp.com/org1/tasks

последний маршрут.

Поместите маршруты для http://myapp.com/login и http://myapp.com/tasks перед маршрутом org1 / tasks. Таким образом, только если маршрут входа в систему и задачи не совпадают, маршрутизатор Rails будет искать более общие маршруты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...