在构建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,用户可以在其中查看和编辑组具有的所有权限,或者用户拥有的所有权限。有没有更好的方法呢?
答案 0 :(得分:0)
没有。您需要的上下文越多,不幸的是,它需要的复杂性就越高。如果您向应用添加API,它可能会变得更加复杂,因为您通常需要基本资源,而不是嵌套资源。我找到的唯一解决方案是尝试通过不创建最常用的路由来达到平衡,然后通过让这些请求符合来消除其余的路径。令人困惑,是的!