[英]Rails: cancancan gem condition is not working
在我的項目中,我有一個使用Devise身份驗證的用戶類。 每個用戶都有一個與之關聯的角色。 例如,經理是第一角色。
角色是一個類,並且基於role_id在角色和用戶之間存在關聯。 因此,經理的role_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 gem: https : //github.com/CanCanCommunity/cancancan
如果我的IDE表示找不到current_user,這是正常的嗎?
另外,如果您在github上檢查,則有一個如何使用cancancan的示例:
如您所見,讀取權限后有一個@article。 所以我認為我不需要放置current_user而不是@user
問題是:user
不正確。 當它是模型時,您需要首先在模型名稱前寫一個大寫字母,不要使用“:”。 因此,代替:user
,應該是User
current_user
依賴於Rails會話。 由於這是您對用戶控制器執行的#new操作,因此您沒有活動的會話,因此沒有current_user。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.