在我的項目中,我有一個使用Devise身份驗證的用戶類。每個用戶都有一個與之相關的角色。例如,經理是#1角色。Rails:cancancan寶石狀態不起作用
角色是一個類,角色和用戶之間有一個基於role_id的關聯。因此,經理的角色ID爲1.
我安裝了cancancan gem來管理每個用戶的權限。只有經理可以創建用戶帳戶。所以,我寫這個的能力類:
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.role_id == 1
can :manage, :user
else
cannot :manage, :user
end
end
在我的用戶控制,我有這樣的:
def new
@user = User.new
authorize! :manage, @user
end
問題是,當我登錄我的經理,並嘗試獲取新的用戶頁面,我收到來自cancancan的消息,說我沒有訪問該頁面的權限。
我不知道這是否是我的條件,或當我試圖訪問您的幫助user.role_id或...
感謝。
見cancancan寶石:https://github.com/CanCanCommunity/cancancan
編輯:
如果我的IDE說,它無法找到CURRENT_USER這是正常的嗎?
另外,如果你在github上檢查,有如何使用cancancan一個例子:
正如你看到的,有讀取權限後@article。所以,我不認爲我需要把CURRENT_USER代替@user
最後的:
問題是:user
,這是不正確的。當它是一個模型時,首先需要爲模型的名稱寫一個大寫字母,而不使用「:」。因此,而不是:user
,它應該是User
問題是:用戶不正確。當它是一個模型時,首先需要爲模型的名稱寫一個大寫字母,而不使用「:」。所以,而不是:用戶,它應該是用戶 –