在构建 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,用户可以在其中查看和编辑组拥有的所有权限,或用户拥有的所有权限。有没有更好的方法来做到这一点?