4

在构建 Rails 应用程序时,我最近遇到了一种情况,我希望一个资源可以在多个其他资源的上下文中访问,并且根据上下文的不同表现略有不同。处理此类事情的最佳方法是什么?目前,我通过将资源嵌套在多个父资源中来处理这个问题。然而,这变得有些麻烦,我想知道是否有更好的方法来做到这一点。


例子:

假设我有一个 UserRights 模型,并且我希望用户能够在单个用户或整个用户组的上下文中查看、创建和编辑这些权限:

resources :users do
  resources :user_rights, context: :user # params[:context] = :user
end

resources :groups do
  resources :user_rights, context: :group
end

这会生成路线:

users/:user_id/user_rights/:id
groups/:group_id/user_rights/:id

然后,在控制器中,我根据上下文处理的事情略有不同。

这允许我在客户端提供一个相当不错的 UI,用户可以在其中查看和编辑组拥有的所有权限,或用户拥有的所有权限。有没有更好的方法来做到这一点?

4

1 回答 1

0

不,您需要的上下文越多,不幸的是,它需要的复杂性就越高。如果您将 API 添加到您的应用程序,它可能会变得更加复杂,因为您通常需要基本资源,而不是嵌套资源。我发现的唯一解决方案是尝试通过不创建最常用的路由来达到平衡,然后通过让这些请求符合要求来消除其余的路由。令人困惑,是的!

于 2012-08-08T16:42:20.750 回答