我已经修改了我的设计表用户,以有一个间隙列。此列是一个数字 (1-3),表示用户的权限(读、读/写、完全控制)。与我正在阅读的所有示例不同,我的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)属于“其他”条款,因此我只能阅读帖子。如果我尝试创建一个新页面,我会收到一条您无权访问此页面的消息。我迷路了。帮助?