开发者

Rails routing/polymorphism issue - how to model the following

开发者 https://www.devze.com 2023-01-02 16:14 出处:网络
I have an app where a \'user\' belong to a \'client\' or a \'vendor\' (and client and vendor has_many users). In the admin namespace, I want to administer these users - so an admin would choose a clie

I have an app where a 'user' belong to a 'client' or a 'vendor' (and client and vendor has_many users). In the admin namespace, I want to administer these users - so an admin would choose a client or a vendor, then nav to that client's or vendor's users. My question is, short of making the user model polymorphic, how could I model/route this?

Here is what I have in terms of routing:

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

I know I could do something like:

map.namespace :admin do |admin|
  admin.resources :clients do |client|
    client.resources :users
  end
  admin.resources开发者_如何学JAVA :vendors do |vendor|
    vendor.resources :users
  end
end

But the above would definitely need me to treat the User as polymorphic.

I'm just wondering what you would recommend or what my options are.

Thanks.


I would try the second solution and construct your links like this:

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

Means: the magic comes from the Array syntax automatically. The same goes with render:

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

It will automatically render views/admin/users/_show.html.erb or views/admin/{vendors,clients}/_show.html.erb respectively. You can also use this Array syntax with forms etc. It will be pretty straight forward and you should have no problem with polymorphic routes.

0

精彩评论

暂无评论...
验证码 换一张
取 消