2013-03-22 33 views
0
class Ability 
include CanCan::Ability 

def initialize(user) 
user ||= User.new 
if user.admin == 1 #admin 
    can :manage, :all 
elsif 
    user.id != nil # registred users 
    can :read, :all 
    can :create, Post 
    cannot :manage, User 
else 
    can :read, :all # guest user (not logged in) 
    cannot :manage, User 

end 

这是我的能力文件。我希望它能让第一个注册用户成为管理员,并为他们提供编辑整个网页的所有权限,而用户只能管理帖子,并且只允许用户阅读帖子。但是,当我使用 如果可以?在我的代码中,管理员被授予与普通用户相同数量的访问权限。我究竟做错了什么?如何使第一个用户具有能力文件的管理员(cancan)

+1

你确定你传递的初始化用户是*实际上是一个管理员?我会用'user.inspect'作为第一行删除一个日志记录调用,以确保我有一个管理员用户。其次,你有没有尝试'如果user.admin?'。我假设它是一个布尔字段而不是整数。 – 2013-03-22 11:46:33

回答

0

在我的工作中,我必须做同样的事情,但公司。

每个公司创建我检查是否是第一个,如果是,我将其设置为管理员,否则,正常用户。

这里使用if can?来定义菜单是隐藏还是可见。仅此之后,如果用户键入URL,用户仍然可以访问页面,因此您需要添加load_and_authorize_resource,以便用户收到有关没有权限的消息。

这就是你需要的吗? =)

相关问题