我是RoR的新手,開始研究典型的'has_many'關聯(即用戶有很多朋友)。我有一切正常工作,但我不喜歡有暴露在URL中的ID。我發現我需要在控制器中添加額外的驗證,以確保用戶手動輸入不同的ID時,ID代表有效的關聯。有關軌道路線和驗證中模型ID的想法
就我個人而言,我希望看到網址中的id並通過其他方式傳遞,但這並非總是可行。資源的淺層嵌套將有助於減少至少需要驗證的ID數量。
這是什麼RoR理念?我還沒有看到這個問題的具體情況。
謝謝
我是RoR的新手,開始研究典型的'has_many'關聯(即用戶有很多朋友)。我有一切正常工作,但我不喜歡有暴露在URL中的ID。我發現我需要在控制器中添加額外的驗證,以確保用戶手動輸入不同的ID時,ID代表有效的關聯。有關軌道路線和驗證中模型ID的想法
就我個人而言,我希望看到網址中的id並通過其他方式傳遞,但這並非總是可行。資源的淺層嵌套將有助於減少至少需要驗證的ID數量。
這是什麼RoR理念?我還沒有看到這個問題的具體情況。
謝謝
如果URL是GET url,那麼URL有參數。
嘗試使用POST參數,這意味着您的網址將不再混亂。請注意,惡意用戶仍然可以使用curl發送構建的POST請求。
我的做法是實施適當的授權。如果用戶請求他不允許閱讀的對象的信息,則應該由授權框架處理。 使用CanCan或Declarative Authorization您可以定義規則來替換控制器中的「手動」(以及容易出錯)檢查。
我喜歡URL中的ID。這就是REST的內容。獲取特定資源的信息,這些資源必須用ID標識。
您可以使用Friendly ID爲了用slug替換整數ID(例如用戶/收費站而不是用戶/ 42)。
默認情況下,ror路由默認採用id
作爲生成url的關鍵字。如果您不是基於ID的網站粉絲,那麼您可以始終使用to_param
模型來覆蓋網址。
def to_param
# make sure this field is always present & unique
username
end
則默認情況下你將開始看到的username
代替id
裏面的URL
如何找到對象的內部控制器動作
User.find_by_username(PARAMS [:編號])
如果你不想這樣做手動使用slu ge寶石像friendly id
這個問題是關於我的情況下,任何人都有興趣(http://stackoverflow.com/questions/2892394/restfully-nesting-resource-routes-with-single-identifiers)。 – tollbooth 2011-03-27 01:01:33