2013-03-08 87 views
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 

回答

0

在你ability.rb文件,

if @user && @user.role?(:admin) 

也許應該

if user && user.role?(:admin) 
+0

是的,我注意到,早些時候,並繼續來回切換,它不會改變任何東西。 ATM我不明白如何爲每個用戶角色分配真正的價值。我現在可以創建一個帳戶,選擇管理員...但是我仍然沒有管理員權限。 – pwz2000 2013-03-08 03:34:26

+0

我假設你試圖通過某種形式來設置它;你有沒有試過通過控制檯設置它,只是爲了確保它的工作?另外,只需要檢查一下,你的'User'表有一個'roles_mask'列,對吧? – 2013-03-08 03:42:40

+0

是的,我已通過表單設置。我還沒有完成控制檯,說實話,我甚至還沒有使用該控制檯爲這個項目。我知道我沒有角色分配來保存價值。 – pwz2000 2013-03-08 03:46:38

相關問題