因此,您正在嘗試使用Devise的註冊頁面,並且僅限訪問成員。
設計只做身份驗證。它不知道cancancan能力或您可能引入的任何其他用戶邏輯。因此,你想要的東西不會失效。
您需要公開控制器並覆蓋註冊控制器。您可以使用
rails generate devise:controllers users
如果你的色器件用戶模式是users
。請參閱設計文檔以獲得實際的命令參考。然後您可以自定義註冊控制器。
我希望在這裏做的是使用能力和身份驗證檢查作爲控制器操作。
class Devise::RegistrationsController < DeviseController
...
before_action :authenticate_user!
load_and_authorize_resource
但是你可以做任何你想做的事情。這是你想要限制訪問的部分。您可以涉及rolify或應用程序的任何其他組件。
這基本上就是你要求的。但是,我會推薦而不是採取這種方式。
我和我正在進行的項目有過類似的經歷。我試圖構建一個基於管理員的添加用戶頁面,並嘗試使用設計註冊頁面作爲基礎並對其進行修改。
但是我所經歷的是定製這些控制器,並且當您開始更改頁面的實際動態時,視圖(特別是控制器)越來越麻煩。您可能會發現自己越來越深入,以確保整個身份驗證模型無任何問題地運行。
相反,我所做的就是介紹我自己的控制器。由於devise公開了身份驗證模型和方法,因此執行標準任務(例如添加,刪除和更新用戶)相當容易。你的控制器將是非常微不足道的,事實上,對於cancancan來說,使用load_and_authorize_resource
來編寫一個可以自動處理資源操作的框架控制器(沒有方法體)就足夠了。
您可以複製設計的視圖並使用此控制器。這樣你可以提供一個類似的設計前端體驗。
這種方法最重要的優點是您不需要擴展設計並將其作爲組件工作。因此,任何會在您的項目或設計中發生變化的東西都不會對您造成太大影響。
cancancan能力刪減只定義角色。你需要檢查他們是否允許訪問。你有沒有在註冊頁面控制器上做任何檢查? – infiniteRefactor
不,我沒有那個控制器,可能Devise有。我需要以某種方式覆蓋它嗎? –