【发布时间】:2012-07-29 19:28:51
【问题描述】:
我已经修改了我的设计表用户,以便有一个许可列。此列是一个数字 (1-3),表示用户的权限(读、读/写、完全控制)。与我正在阅读的所有示例不同,my Clearance(示例中的角色)不是具有关系的单独表,而是设计表(用户)中的自己的列。它的默认值为 1。
我的能力.rb 是这样的:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user.clearance.equal?("2")
can :create, Post
can :manage, Post, :user_id => user.id
else
can :read, :all
end
end
end
我已经从我见过的其他示例中写下了这个(我真的是 Rails 新手,但除非绝对必要,否则尽量不寻求帮助),目的是让权限值为 2 的用户可以创建帖子并只管理他们的帖子。我还包括了这一点,因为我还没有编写 1 和 3 的代码,所以所有其他许可编号都可以读取所有内容。
然而,Cancan 显然认为我的用户(已确认许可级别为 2)属于“其他”条款,因此我只能阅读帖子。如果我尝试创建一个新页面,我会收到一条您无权访问此页面的消息。 我迷路了。帮忙?
【问题讨论】:
标签: ruby-on-rails ruby devise cancan