2012-07-29 57 views
0

我修改了我的设计表,用户,有一个清除列。此列是表示用户权限(读取,读取/写入,完全控制)的数字(1-3)。与我正在阅读的所有示例不同,我的 Clearance(示例中的角色)不是具有关系的独立表,而是Devise表(User)中的自己的列。它的默认值是1康康和设计不工作

我ability.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)属于“其他”规定,因此我只能阅读帖子。我得到一个你没有权限访问此页面的消息,如果我尝试做一个新的。 我迷路了。帮帮我?

回答

1

可能这是间隙列是整数吗?在这种情况下,你应该写user.clearance == 2而不是你写的。

+0

就是这样。谢啦。就像我说的,我是新的。但我在学习。一旦Stack让我看,我会尽快检查你的答案。 – 2012-07-29 19:35:45