Rails路由/多态问题 - 如何建模以下

时间:2010-06-06 01:48:12

标签: ruby-on-rails ruby routing polymorphism

我有一个应用程序,其中'用户'属于'客户'或'供应商'(客户和供应商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

但是上面肯定需要我将用户视为多态。

我只是想知道你会推荐什么或者我的选择是什么。

感谢。

1 个答案:

答案 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.erbviews/admin/{vendors,clients}/_show.html.erb。您也可以将这种数组语法与表单等一起使用。这将非常简单,您应该对多态路由没有任何问题。