在我的ability.rb文件中,如何设置它以便只有已定义的用户可以执行操作,否则(未定义/未登录的用户)无法执行任何操作?
示例:
def initialize(user)
user ||= User.new #not logged in user
if user.admin_user?
can :manage, :all
else
#can't do anything. Cannot view, edit, or update.
end
end
谢谢!
答案 0 :(得分:1)
我从未真正使用过CanCan,但我查看了文档,我认为您不需要明确定义用户不能做什么。
你应该只能在你的控制器中做这样的事情:
if cannot? :destroy, @project
# redirect the user or do something else to disallow access
end
如果未为用户分配具有任何定义的角色的角色,则 cannot?
应返回true。相反,can?
将返回false。
答案 1 :(得分:0)
您可以在初始化函数中尝试一个简单的条件集:
# app/models/ability.rb
def initialize(user)
if user && user.admin_user?
# Abilities for registered admin users
can :manage, :all
elsif user
# Abilities for registered users
can :read, :all
else
# Abilities for no user
end
end
调用initialize
时,user
可能(取决于您的身份验证解决方案)为nil
未登录的用户,这将触发最后一个分支。