0
我是Rails的新手,並且遇到了如何創建用戶角色並使其與Cancan一起工作的麻煩。我正在關注這個和cancan維基上的投影。我不明白要做的是定義每個用戶角色,例如管理員,註冊成員和訪客可以訪問的內容。我不確定我是否在正確的道路上,或者不在我的編碼中。我也遇到了「未定義的局部變量或方法`roles_mask'」錯誤。在cancan中設置用戶角色
我不相信我在下面的文件中設置了適當的角色。如果有幫助,我從頭開始創建用戶認證。我到目前爲止的部分是圖庫和用戶配置文件。如果我創建一個新賬戶並選擇下拉框選項「管理員」,我沒有任何管理權限。我仍然鎖定訪問頁面。
ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user
if @user && @user.role?(:admin)
can :manage, :all
else
can :read, :all
end
if user.role? :user
can :manage, Profile
end
if user.role? :admin
can :manage, Profile
end
end
end
user.rb
ROLES = %w[admin user guest banned]
def roles=(roles)
self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum
end
def roles
ROLES.reject { |r| ((roles_mask || 0) & 2**ROLES.index(r)).zero? }
end
def role?(role)
roles.include? role.to_s
end
是的,我注意到,早些時候,並繼續來回切換,它不會改變任何東西。 ATM我不明白如何爲每個用戶角色分配真正的價值。我現在可以創建一個帳戶,選擇管理員...但是我仍然沒有管理員權限。 – pwz2000 2013-03-08 03:34:26
我假設你試圖通過某種形式來設置它;你有沒有試過通過控制檯設置它,只是爲了確保它的工作?另外,只需要檢查一下,你的'User'表有一個'roles_mask'列,對吧? – 2013-03-08 03:42:40
是的,我已通過表單設置。我還沒有完成控制檯,說實話,我甚至還沒有使用該控制檯爲這個項目。我知道我沒有角色分配來保存價值。 – pwz2000 2013-03-08 03:46:38