2010-06-06 5 views
0

J'ai une application où un «utilisateur» appartient à un «client» ou un «fournisseur» (et le client et le vendeur a_many utilisateurs). Dans l'espace de noms d'administration, je souhaite administrer ces utilisateurs - un administrateur choisirait alors un client ou un fournisseur, puis naverait vers les utilisateurs de ce client ou du fournisseur. Ma question est, à court de faire le modèle d'utilisateur polymorphique, comment pourrais-je modeler/route ceci?Rails routage/problème de polymorphisme - comment modéliser les éléments suivants

Voici ce que j'ai en termes de routage:

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

Je sais que je pouvais faire quelque chose comme:

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

Mais serait-dessus sans aucun doute besoin de moi pour traiter l'utilisateur comme polymorphes. Je me demandais simplement ce que vous recommanderiez ou quelles sont mes options.

Merci.

Répondre

0

Je voudrais essayer la deuxième solution et construire vos liens comme ceci:

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

Moyens: la magie vient de la syntaxe Array automatiquement. La même chose avec render:

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

Il rendra automatiquement respectivement views/admin/users/_show.html.erb ou views/admin/{vendors,clients}/_show.html.erb. Vous pouvez également utiliser cette syntaxe Array avec des formulaires, etc. Ce sera assez simple et vous ne devriez pas avoir de problème avec les routes polymorphes.

Questions connexes