我有一个应用程序,其中'用户'属于'客户'或'供应商'(客户和供应商has_many用户)。在管理员命名空间中,我想管理这些用户 - 因此管理员会选择客户端或供应商,然后导航到该客户端或供应商的用户。我的问题是,如果没有使用户模型具有多态性,我该如何建模/路由这个?
以下是路由方面的内容:
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 :(得分:0)
我会尝试第二种解决方案并构建您的链接:
<%= link_to @vendor_or_client.name, [:admin, @vendor_or_client, @user] %>
意味着:魔法自动来自Array语法。渲染也是如此:
<%= render [:admin, @vendor_or_client, @user] %>
<%= render [:admin, @vendor_or_client] %>
它将分别自动呈现views/admin/users/_show.html.erb
或views/admin/{vendors,clients}/_show.html.erb
。您也可以将这种数组语法与表单等一起使用。这将非常简单,您应该对多态路由没有任何问题。