2010-06-06 3 views
0

У меня есть приложение, в котором «пользователь» принадлежит «клиенту» или «поставщику» (а клиент и поставщик имеют несколько пользователей). В пространстве имен admin я хочу управлять этими пользователями - поэтому администратор выбирает клиента или поставщика, а затем навигацию к пользователям этого клиента или поставщика. Мой вопрос заключается в том, чтобы сделать модель пользователя полиморфной, как я мог ее моделировать/маршрутизировать?Проблема с маршрутизацией/полиморфизмом Rails - как смоделировать следующее

Вот что у меня есть с точки зрения маршрутизации:

 
map.namespace :admin do |admin| 
    admin.resources :clients 
    admin.resources :vendors 
end 

Я знаю, что я мог бы сделать что-то вроде:

 
map.namespace :admin do |admin| 
    admin.resources :clients do |client| 
    client.resources :users 
    end 
    admin.resources :vendors do |vendor| 
    vendor.resources :users 
    end 
end 

Но выше, безусловно, нужно будет меня лечить Пользователя как полиморфный.

Мне просто интересно, что вы бы порекомендовали или какие у меня варианты.

Спасибо.

ответ

0

Я хотел бы попробовать второе решение и построить ваши ссылки, как это:

<%= link_to @vendor_or_client.name, [:admin, @vendor_or_client, @user] %> 

Средства: магия происходит от синтаксиса массива автоматически. То же самое происходит с визуализацией:

<%= render [:admin, @vendor_or_client, @user] %> 
<%= render [:admin, @vendor_or_client] %> 

Он будет автоматически оказывать views/admin/users/_show.html.erb или views/admin/{vendors,clients}/_show.html.erb соответственно. Вы также можете использовать этот синтаксис Array с формами и т. Д. Это будет довольно прямолинейно, и у вас не должно быть проблем с полиморфными маршрутами.

Смежные вопросы