1
A
回答
0
不,你不能那樣做。路線不依賴於基於模型代碼的條件。任何人都可以呼叫一條路線,所以你不能依賴那條路線。
相反,只需在要保護的控制器上添加「before_filter:authenticate」(使用會話)即可。如果有人試圖訪問您的管理員控制器而不是管理員,他們將被重定向到登錄或您喜歡的任何地方。
2
其實我覺得你可以使用高級的約束,它是記錄here ......
你會定義一個def matches?(request)
檢查,如果用戶登錄,並使用兩條路線一個有約束時的簽署,一個沒有時。 儘管我不確定在執行該自定義約束時會話是否可用。
儘管我同意SpyrosP,但最好在控制器中執行此操作。
0
我認爲以前的答案(在控制器中建議before_filter更合適)略微缺少OP的用例。將它作爲條件路由/高級約束仍然有優勢。它不會取代控制器中的前置過濾器,以防止未經授權的直接訪問。但是,例如,直接將redirect_to root_path路由到例如用戶在登錄時的個人資料或不在首頁的用戶個人資料,可保留在之前的過濾器中以其他方式丟失的第二次重定向中的閃光消息。更優雅的恕我直言,以使用先進的約束方法(當然假設當測試自定義約束時會話實際上是可用的)。更不用說,在這種類型的實例中,爲什麼不保存額外的重定向(因爲它涉及整個其他HTTP(S)事務)?
更新: 如果您正在使用設計,this文章描述了一個更好的方法。只是自己實現它,它很好,而且很乾淨。
此外,解釋反對票的評論總是值得讚賞的,不僅僅是作者,還有其他閱讀答案的人,因此他們知道爲什麼它可能不是合理的答案。
相關問題
- 1. 條件在R
- 2. rails 3:routes.rb中的自定義路由
- 3. :ID =在routes.rb中
- 4. 在routes.rb中
- 5. 在routes.rb中
- 6. 條件爲R
- 7. 在R,滿足的條件
- 8. 在R中粘貼條件
- 9. 腳手架不會創建Routes.rb條目
- 10. 如果在r條件的條件中出現中斷條件
- 11. r - 一起創建3個條形圖
- 12. 帶有3個變量的R條圖
- 13. ?在routes.rb與map.with_options ruby
- 14. 檢測在routes.rb中
- 15. 的R - 與條件
- 16. r條件語句
- 17. R條件陳述
- 18. 條件ifelse r中
- 19. R條件求和
- 20. url_for如何檢查我的routes.rb中的約束條件
- 21. 迷惑我的routes.rb文件
- 22. 從React組件訪問routes.rb
- 23. R多條件條件迴歸
- 24. 如何在Rails 3中重定向routes.rb中的嵌套資源
- 25. MVC 3條件HTML
- 26. Rails - Findin 3條件?
- 27. 在多條件下在R中聚合
- 28. 軌文件routes.rb中的語法問題
- 29. R - 在條件日期(多個條件)後刪除/刪除行
- 30. 有條件的循環在R不識別條件語句?