2012-08-08 39 views
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 

然後,在控制器中,我根據上下文處理事情稍有不同。

這使我可以在客戶端提供一個相當不錯的用戶界面,用戶可以在其中查看和編輯組擁有的所有權限或用戶擁有的所有權限。有沒有更好的方法來做到這一點?

回答

0

不需要。您需要的環境越多,不幸的就越複雜。如果您將API添加到應用程序中,則它可能會變得更加複雜,因爲通常您需要基本的嵌套資源。我發現的唯一解決方案是通過不創建最常用的路線來達到平衡,然後通過使這些請求符合要求來消除其餘的問題。令人困惑,是的!

+0

啊,好的。我想我只是希望在那裏有一些最佳實踐來處理擁有多個父項的嵌套資源。我想我只需要儘量保持我的代碼儘可能乾淨...... – Ajedi32 2012-08-08 20:40:13

+0

您可以以任何您想要的方式嵌套 - 沒有任何限制或處罰(除了創建它們的時間之外) 。所以如果它的邏輯性和對程序員/用戶的清晰度有幫助,那就去做吧。我的答案可能更多地受到我用API處理嵌套資源時看到的複雜性的驅動,其中額外代碼要求的處罰很高。 – 2012-08-08 20:47:39