如何通过CanCan授予用户权限

时间:2011-07-14 18:56:29

标签: ruby-on-rails permissions admin roles cancan

我正在使用CanCan获得用户许可。我设置得很好并且有:

def initialize(user)
# Define abilities for the passed in user here. For example:
user ||= User.new # guest user (not logged in)

    if user.role? :admin
        can :manage, :all

    else        
        can :create, Post           
        can :read, Post
    end

    def role?(role)
        return !!self.roles.find_by_name(role.to_s.camelize)
    end

我的问题是如何实际为用户提供角色,这意味着现在所有用户都属于其他类别...如何让用户与之关联:admin?

1 个答案:

答案 0 :(得分:2)

执行此操作的简便方法是向用户添加字符串role属性。

然后,在您的用户模型中:

def role?(arg)
  self.role.to_sym == arg.to_sym
end

并删除Ability模型中的role?方法,您的示例不需要它。